您好,欢迎访问三七文档
C#知识点总结1、Console.WriteLine():打印到控制台并换行2、C#类型:值类型、引用类型3、namespace:不同文件夹下的类可以属于同一个namespace4、字符串相加:使用“+”操作符,任何其他对象与字符串相加都会自动调用ToString()5、字符串存储:str1=“111”;str2=“111”,str1和str2指向同一地址6、字符串比较:只要str1和str2内容相同,str1==str2表达式都会返回true。==操作符被String重载7、整型:byte、short、int、long,都有相应的有/无符号版本,其中byte是无符号的,其他是有符号的8、浮点型:float、double、decimal,只有有符号版本9、值类型中的数值型:都包含MinValue、MaxValue属性,可以直接由类型通过(.)操作符访问10、强制类型转换:“()”操作符,如inti=(int)c;11、char:字符型,Unicode编码(16位)。可看作无符号整型,可以使用ushort以上的类型强制类型转换。12、char/Unicode码段常量:数字0-9(48-57),大写字母A-Z(65-90),小写字母a-z(97-122)13、特殊字符:’\t’-制表位;’\n’-换行符eg:Console.WriteLine(yingshi\tyang)效果为:yingshiyang(中间空四个格)14、赋值语句/表达式:赋值语句在表达式中只计算左值,计算前已经将右值计算结果赋予左值15、bool:逻辑型,只有两个值,true/false16、出现在字符串中的双引号:写法为(\)17、数值、char、bool的Parse()方法:基础值类型都包含该方法,将字符串转为本类型变量18、数值型.Parse():参数如果不是数值,或者越界,将返回异常19、编译器捕获数值计算越界:在编译期判断是否越界,如果判断越界,则根本不可能编译成功20、未捕获的数值计算越界(如方法调用):则回到数值型范围开始处。即MaxValue+1:MinValue21、sizeof:返回类型所占字节数。如,sizeof(int)返回422、Framework类型与CLS(公共语言子集):所有类型都是定义在Framework中,语言本身没有类型23、值类型:结构(struct)、枚举(enum)24、C#预定义的13种值类型:.net结构的别名25、常用值类型别名:Int32-int,Char-char,Double-double,Boolean-bool26、常用类别名:Object-object,String-string27、struct:值类型。直接声明即可使用。如structPerson{……},Personyang;yang.name=”yang”;28、enum:一组预定义的值。enum中的值为int型,不可定义为其他类型(比int小的类型会隐式类型转换)如果不指定数值,则从0开始递增1可以指定数值,此时,其后如果不指定数值,则在前一基础上递增129、存储:栈,固定大小的存储空间,效率高;堆,不固定大小的存储空间,灵活性大栈:值类型、引用类型的句柄(地址值,32位机上是32位(4字节),64位机上8字节)堆:引用类型的对象30、引用类型:栈中存储句柄,堆中存储对象,句柄指向对象31、new:在堆中分配空间。所以,struct对象不用new,定义即可使用;class对象需要new32、string:是String类的别名,是一种非常特殊的类型创建对象:可以使用strings=newString(“111”)方式,也可以直接使用strings=”111”方式内存开销:如果已经存在strings1=“111”;则strings2=“111”;直接返回s1句柄存储的地址33、赋值语句(=):在栈中实现一次复制,将右值赋值给左值引用类型的赋值语句:复制句柄存储的地址34、%:10%-3是1;(10/-3=-3……1)35、bool:true/false,可以通过(1)定义bool型;(2)关系表达式;(3)逻辑表达式;(4)条件布尔表达式;(5)函数返回值获得,作为判断、循环语句的条件使用36、逻辑操作符非(!):取反,!true是false;!false是true与(&):两操作数都是true,结果才为true,其他为false或(|):两操作数都是false,结果才为false,其他为true异或(^):两操作数不同,结果为true,其他为false37、条件布尔操作符:&&与,||或,作用与逻辑操作符中的&,|完全相同,但采用部分运算,因此效率较高,在实际编程中也可以避免一些错误。bool-expression1&&bool-expression2:如果bool-expression1是false,则不再计算bool-expression2bool-expression1||bool-expression2:如果bool-expression1是true,则不再计算bool-expression2举例:if(list!=null&&list.Count!=0){},如果list是null,则list!=null返回false,不再计算list.Count!=0;if(list!=null&list.Count!=0){},当list为null时,list!=null表达式返回false,list.Count!=0表达式会跑出NullReferenceException异常38、三元操作符(?:):obj=bool-expression?obj1:obj2;bool-expression如果为true,则执行obj=obj1;否则,执行obj=obj2;39、switch:开关语句。开关条件:整型(byte,short,char,int,long)、字符串执行描述:从第一个匹配的case起执行,到break/return语句出现为止要求:一旦某个case中包含执行代码,则必须break/return40、临时变量必须初始化后才能使用。PS:临时变量,方法、构造器等中出现的变量41、数组中的元素会被初始化42、数组元素访问越界,会产生IndexOutOfRangeException异常43、二维数组:理解为每一个元素都是一维数组的数组。设为biArrbiArr.Length:二维数组有多少个元素biArr[i].Length:二维数组的第i个元素内有多少个元素访问二维数组的元素的元素,使用[][]操作符如果所选择的下标越界,将产生IndexOutOfRangeException异常44、变量的生存周期临时变量:从定义的那一行起,到靠它最近的{}结尾符止。生存周期以外,不可见45、方法原型:返回值类型方法名([类型形参,类型形参…]){方法体}46、方法的特征:方法名、参数表(数量、类型、顺序)方法的返回值类型不在其列方法的参数名称不在其列47、VS操作[解决方案、项目、引用、Main方法]一个解决方案内可能包含多个项目,可以通过[设为启动项目]来告知VS默认启动的项目,此时启动程序将选择默认启动的项目下的Main方法项目之间使用到彼此的类定义时,需要通过[添加引用]操作,将需要用到的项目引入本项目中48、static:属于类的static类:只包含static成员static成员:只能由类通过(.)操作符访问;不能通过对象来访问实例方法可以访问static成员,static方法不能访问实例成员49、const:常量,直接使用类通过(.)操作符访问,不能通过对象来访问。const隐含了static定义50、readonly和cosnt的异同:异:(1)readonly修饰实例字段,const修饰类字段;(2)readonly可以在声明和构造函数两处赋值,const只能在声明时赋值。同:一经赋值,不可改变51、internal:C#顶层类(namespace下直接定义的类,而不是内部类)定义默认访问权限符当前项目内可以访问52、能够访问顶层类的权限符:public(所有项目均可见)、internal(本项目内可见)53、构造函数的原型:类名([类型形参,类型形参…]){方法体}54、构造函数如果不定义构造函数,编译器将生成默认构造函数(public、无参、无内容)只要定义构造函数,编译器将不再生成55、重载:[方法、构造函书]名称相同、参数表不同56、类定义中,数据成员(即字段)是有默认值的数值型:0字符型:Unicode-0bool:false引用类型:null57、构造器重载的this写法:以Book类为例,假设Book包含一个定义了名称和价格的构造器,此时重载一个只有名称的构造器。publicBook(stringname):this(name,0){}58、构造器重载的设计思路:由简入繁,每次需要添加代码;由繁入简,每次需要传入默认值。使用第二种,先定义包含字段最多的构造器,重载包含字段较少的构造器时,使用this调用59、析构函数:在对象被释放前,由垃圾收集器调用ü写法为:~+类名,没有访问类型符、返回值类型、参数表60、面向对象三要素:封装、继承、多态61、C#访问权限符:private、protected、internal、internalprotected、public62、类内部默认访问权限符:private63、protectedinternal:子类和当前项目内的类都能访问的权限,书写不分先后64、方法参数传递:ref和out的异同相同点:方法定义和方法调用时都需要明确标识属性不可作为ref/out参数传递不同点:out参数可以没有初值out参数在方法定义中必须被初始化65、delegate:委托,指向方法的指针与class、struct、enum平级,在namespace中定义定义原型:delegate返回值类型委托名(参数表);委托定义原型中,返回值类型和参数表正是方法原型的组成部分,委托也正是为指向具体方法而存在的。我们定义了一个委托后,可以使用该委托指向一个返回值类型和参数表都相同的方法,并通过委托执行该方法。委托的使用与类相同,使用new创建委托对象,但是需要传入方法名作为参数66、一个解决方案可以有多个项目,每个项目都可以且仅可以有一个含Main方法的类。如果一个项目中有两个Main方法,VS将提示“定义了不止一个入口点”,编译失败。67、类继承定义中,不允许派生类的可访问性比其基类更高。否则VS将提示“基类比派生类的可访问性低”,编译失败。基类public,派生类public/internal基类internal,派生类internal68、Object:所有类的基类,在C#中拥有一个别名:objectC#类体系为单根继承结构,所有类都直接或间接继承自Object,并包含一系列方法Equals,判断两个对象是否相等。默认判断两个句柄是否指向同一对象,故而总需要复写GetHashCode,返回对象散列码。如果复写了Equals,总需要复写GetHashCode,原则是Equals返回true时,GetHashCode必须返回相同的数值。GetType:返回类型信息ToString:作为字符串的展现69、调用继承类构造函数:基类如果没有默认构造函数,而派生类构造函数也没有显式调用基类构造函数,将无法通过编译。70、this和basethis当前对象,类定义中所有实例方法、字段、属性等操作都默认隐含this标识符。作为构造函数访问符,可以在构造函数定义中,调用本类其他的构造函数base基类对象,每个类的对象中都隐含包括了基类的子对象,可以通过base访问基类的成员作为构造函数访问符,可以在构造函数定义中,调用基类的构造函数71、抽象类:abstractclass,必须被继承并实现所有抽象方法后才能被实例化的类抽象类不能被实例化抽象类可以包含抽象方法;包含抽象方法的必须是抽象类抽象方法(abs
本文标题:C#-的知识点总结
链接地址:https://www.777doc.com/doc-5897080 .html