《2022年C知识点总结表 .docx》由会员分享,可在线阅读,更多相关《2022年C知识点总结表 .docx(16页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、姓名:敬杰.NET 课程 c#学习总结表一、 C#学问点汇总(用标记,自己可增加学问点)把握程度学问点语句不理解了解理解熟练精通备注结构枚举值类型,引用类型装箱拆箱string和 StringBuilder数组集合类方法参数( ref,out,params)分部方法,扩展方法,匿名方法构造函数字段,属性索引器托付大事静态类,密封类,抽象类接口虚方法,重载方法继承二、 C#学习心得体会C#基础的学习已经终止从这十天的时间中发觉了很多在学校没有留意也从来没用过的学问点,在这里对每个学问点谈一下心得和懂得;1. 语句:语句是构造全部C#程序的构造块,通常以分号终止语句;一个大括号括起来一系列语句构成
2、的代码块;语句可以声明局部变量或常数,调用方法, 创建对象或将值给予变量、属性或字段;语句重点学习的是挑选语句,循环语句,跳转语句,反常处理语句;A,条件语句包括: if else, switch .case.default if else语句的基本结构是1) if( bool 类型的判定语句)当 bool 值为 true时执行的代码else当 bool 值为 false时执行的代码2) switch.case.default的基本用法为:switch (需要判定的变量)case变量的值 :当变量的值与该变量相同时执行的代码break ; defult: break ;B ;循环语句: whi
3、le语句, do.while语句, for语句, foreach语句1) While 的用法:while (返回值为 bool 型的变量)当 bool 值为 true时执行该段代码,否就跳出循环2) do.while的用法:do无论 while后的 bool 值是否为空该段代码都会被执行,如 bool值为 false会在执行一次后跳出循环while返回值为 bool 型的变量 3) for循环的用法:for (可赋值的变量 =初始值;变量的范畴;变量依次变化量)满意条件执行的代码刚知道的 for循环的用法:for DateTime dt = DateTime.Parse2022 - 7- 1;
4、 dt DateTime.Now; dt=dt.AddDays1Console.WriteLinedt.ToString;4) foreach语句的用法foreach要循环的每个变量的类型变量名 in要循环的集合或数组 遍历每个集合或数组中的成员C,跳转语句主要有: goto , continue , break , throw 1, goto 语句:跳转到特定的位置例如:goto Mark;Console.WriteLine第一行 ; Mark:Console.WriteLine其次行 ;在以上代码中程序遇到goto 就转到 Mark 处因此不会执行 Console.WriteLine第一行
5、 ;而直接执行 Console.WriteLine其次行 ; 2, break :跳出循环3, continue:跳出本次循环4, throw :抛出反常C反常处理语句: 反常处理有 try ,catch ,finally构成, try语句是必需存在的, catch和 finall可全显现也可省略一个但是必需显现一个try可能会显现反常Catch捕获反常Finally代码执行完后释放资源语句应用时基本不会显现问题,但是可能是代码写的有点少说熟识好像仍达不到那一级别只能说是懂得了,以后仍需多多练习;2. 结构结构是一种值类型继承自ValueType ,通常用于封装小型相关变量组,结构与类不同无法
6、用 new 运算符实例化,结构中有默认的参数为0 的构造函数,与类不同的是,当你为结构自定义一个构造函数时它的默认构造函数不会消逝,因此定义结构的构造函数时必需带有参数;结构可为 null值,结构可以实现接口;结构的声明需要关键字struct,结构的修饰符可以是 public, internal默认修饰拜访符为interal3,枚举用来声明枚举的关键字为:enum 枚举类型也是值类型;例如:enum Menu文件 = 1,编辑 = 2,视图 = 4,1,2,4为枚举数的值,默认情形下为0,1,2枚举的值可以为除了char 类型以外的任何整型,后面每个枚举数的值一次递增1;当其次个枚举名为0.
7、第一个默认时,第一个枚举的值也为 0,枚举中枚举的值可以重复;枚举类型的属性枚举又称为位标志例如:Flagsenum Menu文件 =1,编辑 =2,视图 =4Menu m = Menu.编辑|Menu . 文件 ; Console.WriteLinem;把枚举数的值定义为1,2,4等 2 的倍数可以输出多个枚举值;按枚举的值在程序中自动输出枚举的名称enum Sex/定义性别男,女,class Programstatic void Mainstring argsforeach string s in Enum.GetNamestypeofSexConsole.WriteLineintEnum
8、.ParsetypeofSex,s+s+,;4,值类型和引用类型值类型派生自System. ValueType每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值;值类型包括:简洁类型,枚举类型,结构类型;引用类型:引用类型的变量又称为对象,可储备对实际数据的引用;给变量赋值时值类型仅仅把值传给变量,而引用类型就把地址传给变量,String是特别的引用类型5,装箱和拆箱装箱是把值类型转化成引用类型,拆箱即是取消装箱,是把应用类型转化成值类型,装箱时没有要求,在拆箱时必需知道装箱前变量的类型,拆箱后的变量类型必需与装箱前相同;6 String和 StringBuilderstring是一个
9、特别的引用类型,是任何程序使用最多的类型之一,string是直接赋值来构造的,不能用new 来实例化, string一旦定义是不行变的,假如字符串发生变化就会生成新的字符串;当定义一个字符串时在托管堆中给字符串安排一个空间,当字符串变化时托管堆中为新的值安排空间,旧的空间与字符串的链接会自动断开,通过垃圾回收,收回该字符串在托管堆中的空间,例如:string a=abcs;string b=a;sting a=ebe当 b=a 时把托管堆中的a 的地址也指向 b 当 a 发生变化时托管堆中为a 开创一个新的空间,把a 与新空间链接起来,但b 的链仍旧不变,当b 再放生变化时“ abcs”在托管
10、堆中的空间会被垃圾回收;string中主要的函数为:compare:比较两个指定的string对象返回值为: int类型当两个string变量相同时返回 0,否就返回 -1 ;concat : 把 其 他 形 式 转 换 成 字 符 串 形 式 例 如 : inta=1,2,3;stringb= string.Concata1;他把数组 a 转变成字符串形式的数组例 如stringa=dddd;stringb=wwww;stringc=string.Concata,b;Console.WriteLinec;输出结果为 dddwwww,即把两个字符串转变成一个字符串 StringBuiler:
11、String是不行变的,假如发生拼接就会造成性能上的铺张;当拼接时string会在托管堆中重新开创一个空间存放拼接后的字符,这样造成了性能上的铺张,StringBuiler可以有效的对字符串进行动态的操作,通过保护 char 数组来达到操作字符串在下面两种情形下会安排新对象:试图动成构造一个字符串,它的长度超过了事先设置的容量;试图在调用了 StringBuilder的 ToString方法之后修改数组;7 ,数组Array供应了创建、操作、搜寻、排序数组的方法,全部Array是全部用作数组的基类;Array 数组不能 new 只能通过 CreateInstance方法来创建例如: Array
12、 MyArr = Array.CreateInstancetypeofint, 5; MyArr.SetValue1, 0;MyArr.SetValue2, 1;一维数组的定义四种方式:1,intar=newint21,2 2,intarr=newint1,2; 3,int arr=new int2;arr0=1; 4,int arr=0,2;二维数组的定义: int,arr=0,2,4,54;arr10交叉数组:int arr = new int2 new int 1, 2, 3 , new int 4 ;也可以定义为:int arr = new int2 1, 2, 3 , 4 ;遍历数组
13、时二维数组用arr.GetLength0表示,交叉数组用arri.Length表示,数组都为引用类型;8. 集合集合是一组组合在一起的类似的类型化对象;集合有ArrayList, Quere , Stack ,Hashtable , ListArrayList:用法为: ArrayList al = new ArrayList;al.Add1;当添加的是值类型时会发生装箱,拆箱操作需要使用较多的空间资源Stack是表示对象先进后出的集合Queue 是表示对象先进先出的集合Hashtable :表示键 / 值对的集合,这些键 / 值对依据键的哈希代码进行组织;List:是 ArrayList类的
14、泛型等效类;该类使用大小可按需动态增加的数组实现IList泛型接口; T 是一个类型参数,标明列表中元素的精确类型,而不是ArrayList 中的 object中的类型;类型可以是值类型也可以是引用类型;因此不需发生装箱和拆箱操作9. 类类是一组具有相同数据结构和相同操作的对象的集合;类是对一系列具有相同性质的对象的抽象,是对对象共同特点的描述;类中的成员有:sealed1;c#中的拜访修饰符: public,protected, internal,private,由他们组成的拜访级别有:1) public:拜访不受限制;2) protected:拜访仅限包含类或从包含类派生的类型3) int
15、ernal:拜访仅限于当前程序集;4) private:拜访仅限于包含类型;5) protected+internal:拜访仅限于当前程序集或从包含类派生的类型;除了 protected+internal,成员或类型只能有一个拜访符,结构和类的默认拜访权限为 internal方法的默认拜访权限为: private;enum默认的成员中的可拜访性为public,class 中成员的可拜访性为private, interface中的成员为 public, struct中成员为 private, 命名空间不答应有拜访修饰符;2;构造函数:每个结构和类都有默认的构造函数,类中加入自定义的构造函数后,默
16、认的会自动消逝, 结构中默认的构造函数不会消逝,因此结构中的构造函数必需加参数;构造函数初始化所有字段, 它的方法名与类名相同且无返回值类型,实例化类时 new 的作用: 1;安排内存 2 ;实例化类中的字段和方法类中显现静态构造函数的方法为:1;自定义一个静态构造函数,2;定义一个静态的字段有多个构造函数时先调用静态构造函数,静态构造函数不能有参数和拜访修饰符;3;析构函数析构函数无拜访修饰符,如:MyClass 析构函数一般不使用,当一段代码占用大量资源时才会用析构函数释放资源;不能在结构中定义析构函数;只能对类使用析构函数;一个类只能有一个析构函数;无法继承或重载析构函数;无法调用析构函
17、数;它们是被自动调用的;析构函数既没有修饰符,也没有参数;4;索引器索引器答应类或结构的实例就像数组一样进行索引;索引器类似于属性,不同之处在于它们的拜访器采纳参数;使用索引器:1;使用索引器可以用类似于数组的方式为对象建立索引;2;get拜访器返回值; set拜访器安排值;3;this关键字用于定义索引器;4 ;value关键字用于定义由set索引器安排的值;5; 索引器不必依据整数值进行索引,由您打算如何定义特定的查找机制;6; 索引器可被重载;7; 索引器可以有多个形参,例如当拜访二维数组时;class DayCollectionstring days = Sun, Mon, Tues,
18、 Wed, Thurs, Fri, Sat ; private int GetDaystring testDayint i = 0;foreach string day in daysif day = testDayreturn i;i+;return -1;public int thisstring daygetreturn GetDayday;class Programstatic void Mainstring argsDayCollection week = new DayCollection; System.Console.WriteLineweekFri; System.Conso
19、le.WriteLineweekMade-up Day;改程序输出结果为: 5 -1 public int thisstring daygetreturn GetDayday;为索引器,索引器答应以数组的形式拜访元素,可以定义整形和非整形两种下标;10, 方法参数方法的传递时参数:分引用类型,值类型,ref参数, out 参数, params 参数1;当参数为值类型时这时方法中转变参数的值是没有用的例如: public void method1int iConsole.Writei; i = 100;static void Mainstring argsMyclass mc = new Myc
20、lass; int i = 7;mc.method1i; Console.WriteLinei;打印出的结果为: 7,7 ;详细实现为: int 类型为值类型,当调用 mc.method1i 时 i 把值传给方法 method1 ,也就是调用方法时把 7 传给 method1 的 i ,即输出 7,当方法中 i=100 时,也就是令 7=100;在 main 方法中 i 的值是不发生变化的;2;当参数是值类型时在参数前加 ref 会把值参数的地址传给方法,这与引用类型基本是一样的例如:public void Method3ref string iConsole.WriteLinei; i =
21、100;static void Mainstring argsMyclass mc = new Myclass; int i = 7;mc.Method3ref i; Console.WriteLinei;输出结果为 7,3详细实现为: ref把 i的地址传给方法Method3 当空间中 i 发生变化时地址空间也变化,所以方法终止后i 的值也变化;3 ;out作参数能够返回多个值;例如:public void Method4out int i, out string ji = 100;j = 10;Console.WriteLinei+j;static void Mainstring args
22、MyClass mc = new MyClass; int i = 10;string j;mc.Method4out i, out j; Console.WriteLinei; Console.WriteLinej;结构为: 100 10,100,10在调用时变量不需要赋值,在方法中会把赋的值修改4;方法中使用动态参数例如:public void Mehtod5string t, params int arrintforeach int i in arrintConsole.WriteLinei;static void Mainstring argsProgram mc = new Prog
23、ram; int arrint = new int 1, 2, 3 ; mc.Mehtod5dd, arrint;输出结果为: 1 2 3 params使参数为数组,数组的长度是可变的5;当方法中的参数为引用类型时,传递的是地址,例如: public void method1intarrintforeach int a in arrintConsole.WriteLinea;arrint0 = 1222;static void Mainstring argsint arrint = 1,2,3,4;Myclass mc = new Myclass; mc.method1arrint;forea
24、ch int a in arrintConsole.WriteLinea;输出结果为: 1,2 ,3,4 1222,2,3,4地址传给方法后在方法中参数变化即地址也发生变化,再调用时就发生变化;11, 分部方法,扩展方法,匿名方法分部方法是在分部类中定义的分部方法,关键字为:partial,分部方法是在一个分部类中声明方法签名,在另一个分部类中定义方法体,分部方法也可在一个类中定义,但是少了分部方法的作用;分部方法的返回值必需为void ,可以有 ref但不能有 out 参数,分部方法为隐式 private因此不能为virtual,分部方法不能扩展,分部方法可以有static和unsafe修饰
25、符,分部方法可以为泛型,不能将托付转换为分部方法;不能为静态类定义扩展方法扩展方法:扩展方法使您能够向现有类型“添加”方法,而无需创建新的派生类型、重新编译或以其他方式修改原始类型;扩展方法是一种特别的静态方法,但可以像扩展类型上的实例方法一样进行调用;扩展方法是在静态类中定义的静态方法;扩展方法被定义为静态方法,但它们是通过实例方法语法进行调用的;它们的第一个参数指定该方法作用于哪个类型,并且该参数以this修饰符为前缀;仅当您使用using指令将命名空间显式导入到源代码中之后,扩展方法才位于范畴中;例如:public static int WordCountthis string strr
26、eturnstr.Splitnewchar,.,., StringSplitOptions.RemoveEmptyEntries.Length;该方法是为 string的扩展方法匿名方法:匿名方法不必定义方法名,通过使用匿名方法,由于您不必创建单独的方法,因此削减了实例化托付所需的编码系统开销;匿名方法的参数的范畴是“匿名方法块”;例如:button1.Click+=delegateSystem.Objecto,System.EventArgse System.Windows.Forms.MessageBox.ShowClick.; ; 12 字段,属性字段是类或结构中的对象或值类和结构使用字
27、段可以封装数据;字段通常应为private;外部类应当通过方法、属性或索引器间接拜访字段;字段的初始化紧靠调用对象实例的构造函数之前;假如构造函数为字段赋值,就该值将掩盖字段声明期间给出的任何值;可以将字段声明 readonly;只读字段只能在初始化期间或在构造函数中赋值;staticreadonly字段特别类似于常数,只不过C#编译器不能在编译时拜访静态只读字段的值,而只能在运行时拜访;属性:它们供应敏捷的机制来读取、编写或运算私有字段的值;可以像使用公共数据成员一样使用属性,但实际上它们是称作“拜访器”的特别方法;这使得可以轻松拜访数据, 属性通过 get 和 set 拜访器来操作数据;1
28、3,托付托付是一种引用方法的类型,一旦为托付安排了方法托付将与改该方法具有完全相同的行为;托付的特点:1;托付类似于 C+ 函数指针,但它们是类型安全的;2;托付答应将方法作为参数进行传递;3;托付可用于定义回调方法;4;托付可以链接在一起;例如,可以对一个大事调用多个方法;5;方法不必与托付签名完全匹配;托付的使用:1;托付的定义: delegate void Deleint i;2 ;定义方法:public void Methodint iConsole.WriteLine参数为 :0,i;3;关联托付和方法: Program pro = new Program;Dele del = ne
29、w Delepro.Method; del100;下面是一个托付的例子:public class MethodClasspublic void Method1string message public void Method2string message MethodClass obj = new MethodClass; Del d1 = obj.Method1;Del d2 = obj.Method2;Del d3 = DelegateMethod;/Both types of assignment are valid. Del allMethodsDelegate = d1 + d2;
30、allMethodsDelegate += d3;13,大事大事:类或对象可以通过大事向其他类或对象通知发生的相关事情;发送(或引发)事件的类称为“发行者” ,接收(或处理)大事的类称为“订户”;大事本质上是一组方法;大事的使用步骤:delegate void DL;class TimeOpepublic event DL sj;int step;public int Stepset step = value; public void Beginwhile step 0Console.WriteLine下课 ; Console.WriteLineDateTime.Now.ToString;Th
31、read.Sleep2000; step-;sj;class myclassstatic void MainTimeOpe to = new TimeOpe; to.sj += show; to.Step = 1;to.Begin;static void showConsole.WriteLine上课; Console.WriteLineDateTime.Now.ToString;输出结果为: 下课2022-7-26 16:38:18上课2022-7-26 16:38:20定义一个与方法相应的托付定义关于方法和托付的大事定义大事方法订阅方法响应当大事14静态类,密封类,抽象类1, )密封类关键
32、字为: sealed ,放于 class前,密封类不能用在基类,密封类的主要作用为:防止派生2) 静态类静态类在加载包含该类的程序或命名空间时由.NET Framework公共语言运行库 CLR自动加载;静态类的主要功能:1. 它们仅包含静态成员;2. 它们不能被实例化;3. 它们是密封的;4. 它们不能包含实例构造函数;静态类中的构造函数不能有拜访修饰符和参数,静态类不能被继承也不能继承其他自定义的类;静态方法可以被重载但不能被重写3) 抽象类关键字为: abstract;抽象类不能被实例化;抽象类中的实例化函数不行以被调用,只 有通过子类来调用;静态函数可通过类名. 方法名来调用;抽象类中
33、不能有抽象构造函数也不能有抽象字段;抽象类的拜访修饰符不能为private15,接口接口的关键字为: interface,接口中只能有 public拜访修饰符而且 public不能手动再次输出;接口也不能被实例化;16,虚方法,重载方法虚方法:有关键字virtual的方法为虚方法,虚方法可以在子类中重写,重写的关键字为 override,在子类中也可不重写,子类中的重写掩盖父类的虚方法;重载方法:是方法名相同,方法后的参数类型或数量不同;17,继承继承的方法在子类后加冒号,冒号后加父类名例如:public class Apublic aConsole.WriteLineA的构造函数 ;publ
34、ic class B : Apublic bConsole.WriteLineB的构造函数 ;static void MainB b=new B;新类(即派生类)将猎取基类的全部非私有数据和行为以及新类为自己定义的全部其他数据或行为;构造函数的调用:以上代码为例:当实例化B 时,先调用A 的构造函数,再调用B 的构造函数, B 的构造函数默认继承base 如代码为下例:public class Apublic Aint iConsole.WriteLineA的构造函数 +i;public class B : Apublic BConsole.WriteLineB的构造函数 ;这个例子是不正确的,当实现B 的构造函数时会向上查找与B 类构造函数匹配的A 的构造函数 B 构造函数默认继承base,但 A 中不存在构造函数public AConsole.WriteLineA的构造函数 ;base 表示父类对象, this表示本类对象;继承的子类中可以有和父类方法签名相同的方法当调用时父类方法被隐匿,如在子类方法名前加 new 时称为显示隐匿否就为隐式隐匿;不答应循环继承,继承时调用只会影响子类;方法的重写:在父类的方法前加virtual说明方法定义为虚方法,可以在子类中重写该方法,重写的是前一个virtual的方法;Download .欢迎您的下载,资料仅供参考!Welcome To