敬杰.NET课程c#学习总结表姓名:一、C#知识点汇总(用√标记,自己可增加知识点)掌握程度知识点不理解了解理解熟练精通备注语句√结构√枚举√值类型,引用类型√装箱拆箱√string和StringBuilder√数组√集合√类√方法参数(ref,out,params)√分部方法,扩展方法,匿名方法√构造函数√字段,属性√索引器√委托√事件√静态类,密封类,抽象类√接口√虚方法,重载方法√继承√二、C#学习心得体会C#基础的学习已经结束从这十天的时间中发现了许多在学校没有注意也从来没用过的知识点,在这里对每个知识点谈一下心得和理解。1.语句:语句是构造所有C#程序的构造块,通常以分号结束语句。一个大括号括起来一系列语句构成的代码块。语句可以声明局部变量或常数,调用方法,创建对象或将值赋予变量、属性或字段。语句重点学习的是选择语句,循环语句,跳转语句,异常处理语句。A,条件语句包括:if……else,switch….case..defaultifelse语句的基本结构是1)if(bool类型的判断语句){当bool值为true时执行的代码}else{当bool值为false时执行的代码}2)switch….case..default的基本用法为:switch(需要判断的变量)case变量的值:{当变量的值与该变量相同时执行的代码}break;defult:break;B。循环语句:while语句,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(DateTimedt=DateTime.Parse(2010-7-1);dtDateTime.Now;dt=dt.AddDays(1)){Console.WriteLine(dt.ToString());}4)foreach语句的用法foreach(要循环的每个变量的类型变量名in要循环的集合或数组){遍历每个集合或数组中的成员}C,跳转语句主要有:goto,continue,break,throw1,goto语句:跳转到特定的位置例如:gotoMark;Console.WriteLine(第一行);Mark:Console.WriteLine(第二行);在以上代码中程序遇到goto就转到Mark处因此不会执行Console.WriteLine(第一行);而直接执行Console.WriteLine(第二行);2,break:跳出循环3,continue:跳出本次循环4,throw:抛出异常C.异常处理语句:异常处理有try,catch,finally构成,try语句是必须存在的,catch和finall可全出现也可省略一个但是必须出现一个try{可能会出现异常}Catch{捕捉异常}Finally{代码执行完后释放资源}语句应用时基本不会出现问题,但是可能是代码写的有点少说熟悉似乎还达不到那一级别只能说是理解了,以后还需多多练习。2.结构结构是一种值类型继承自ValueType,通常用于封装小型相关变量组,结构与类不同无法用new运算符实例化,结构中有默认的参数为0的构造函数,与类不同的是,当你为结构自定义一个构造函数时它的默认构造函数不会消失,因此定义结构的构造函数时必须带有参数。结构可为null值,结构可以实现接口。结构的声明需要关键字struct,结构的修饰符可以是public,internal默认修饰访问符为interal3,枚举用来声明枚举的关键字为:enum枚举类型也是值类型。例如:enumMenu{文件=1,编辑=2,视图=4,}1,2,4为枚举数的值,默认情况下为0,1,2枚举的值可以为除了char类型以外的任何整型,后面每个枚举数的值一次递增1。当第二个枚举名为0.第一个默认时,第一个枚举的值也为0,枚举中枚举的值可以重复。枚举类型的属性枚举又称为位标志例如:[Flags]enumMenu{文件=1,编辑=2,视图=4}Menum=Menu.编辑|Menu.文件;Console.WriteLine(m);把枚举数的值定义为1,2,4等2的倍数可以输出多个枚举值。按枚举的值在程序中自动输出枚举的名称enumSex//定义性别{男,女,}classProgram{staticvoidMain(string[]args){foreach(stringsinEnum.GetNames(typeof(Sex))){Console.WriteLine((int)Enum.Parse(typeof(Sex),s)+s+,);}}}4,值类型和引用类型值类型派生自System.ValueType每种值类型均有一个隐式的默认构造函数来初始化该类型的默认值。值类型包括:简单类型,枚举类型,结构类型。引用类型:引用类型的变量又称为对象,可存储对实际数据的引用。给变量赋值时值类型仅仅把值传给变量,而引用类型则把地址传给变量,String是特殊的引用类型5,装箱和拆箱装箱是把值类型转化成引用类型,拆箱即是取消装箱,是把应用类型转化成值类型,装箱时没有要求,在拆箱时必须知道装箱前变量的类型,拆箱后的变量类型必须与装箱前相同。6.String和StringBuilderstring是一个特殊的引用类型,是任何程序使用最多的类型之一,string是直接赋值来构造的,不能用new来实例化,string一旦定义是不可变的,如果字符串发生变化就会生成新的字符串。当定义一个字符串时在托管堆中给字符串分配一个空间,当字符串变化时托管堆中为新的值分配空间,旧的空间与字符串的链接会自动断开,通过垃圾回收,收回该字符串在托管堆中的空间,例如:stringa=abcs;stringb=a;stinga=ebe当b=a时把托管堆中的a的地址也指向b当a发生变化时托管堆中为a开辟一个新的空间,把a与新空间链接起来,但b的链仍然不变,当b再放生变化时“abcs”在托管堆中的空间会被垃圾回收。string中主要的函数为:compare:比较两个指定的string对象返回值为:int类型当两个string变量相同时返回0,否则返回-1;concat:把其他形式转换成字符串形式例如:int[]a={1,2,3};stringb=string.Concat(a[1]);他把数组a转变成字符串形式的数组例如stringa=dddd;stringb==string.Concat(a,b);Console.WriteLine(c);输出结果为ddd,即把两个字符串转变成一个字符串StringBuiler:String是不可变的,如果发生拼接就会造成性能上的浪费。当拼接时string会在托管堆中重新开辟一个空间存放拼接后的字符,这样造成了性能上的浪费,StringBuiler可以有效的对字符串进行动态的操作,通过维护char数组来达到操作字符串在下面两种情况下会分配新对象:试图动成构造一个字符串,它的长度超过了事先设置的容量。试图在调用了StringBuilder的ToString方法之后修改数组。7,数组Array提供了创建、操作、搜索、排序数组的方法,所有Array是所有用作数组的基类。Array数组不能new只能通过CreateInstance方法来创建例如:ArrayMyArr=Array.CreateInstance(typeof(int),5);MyArr.SetValue(1,0);MyArr.SetValue(2,1);一维数组的定义四种方式:1,int[]ar=newint[2]{1,2}2,int[]arr=newint[]{1,2};3,int[]arr=newint[2];arr[0]=1;4,int[]arr={0,2};二维数组的定义:int[,]arr={{0,2},{4,54}};arr[1][0]交错数组:int[][]arr=newint[2][]{newint[]{1,2,3},newint[]{4}};也可以定义为:int[][]arr=newint[2][]{{1,2,3},{4}};遍历数组时二维数组用arr.GetLength(0)表示,交错数组用arr[i].Length表示,数组都为引用类型。8.集合集合是一组组合在一起的类似的类型化对象。集合有ArrayList,Quere,Stack,Hashtable,ListTArrayList:用法为:ArrayListal=newArrayList();al.Add(1);当添加的是值类型时会发生装箱,拆箱操作需要使用较多的空间资源Stack是表示对象先进后出的集合Queue是表示对象先进先出的集合Hashtable:表示键/值对的集合,这些键/值对根据键的哈希代码进行组织。ListT:是ArrayList类的泛型等效类。该类使用大小可按需动态增加的数组实现IListT泛型接口。T是一个类型参数,标明列表中元素的准确类型,而不是ArrayList中的object中的类型。类型可以是值类型也可以是引用类型。因此不需发生装箱和拆箱操作9.类类是一组具有相同数据结构和相同操作的对象的集合。类是对一系列具有相同性质的对象的抽象,是对对象共同特征的描述。类中的成员有:sealed1。c#中的访问修饰符:public,protected,internal,private,由他们组成的访问级别有:1)public:访问不受限制。2)protected:访问仅限包含类或从包含类派生的类型3)internal:访问仅限于当前程序集。4)private:访问仅限于包含类型。5)protected+internal:访问仅限于当前程序集或从包含类派生的类型。除了protected+internal,成员或类型只能有一个访问符,结构和类的默认访问权限为internal方法的默认访问权限为:private。enum默认的成员中的可访问性为public,class中成员的可访问性为private,interface中的成员为public,struct中成员为private,命名空间不允许有访问修饰符。2。构造函数:每个结构和类都有默认的构造函数,类中加入自定义的构造函数后,默认的会自动消失,结构中默认的构造函数不会消失,因此结构中的构造函数必须加参数。构造函数初始化所有字段,它的方法名与类名相同且无返回值类型,实例化类时new的作用:1。分配内存2。实例化类中的字段和方法类中出现静态构造函数的方法为:1。自定义一个静态构造函数,2。定义一个静态的字段有多个构造函数时先调用静态构造函数,静态构造函数不能有参数和访问修饰符。3。析构函数析构函数无访问修饰符,如:~MyClass()析构函数一般不使用,当一段代码占用大量资源时才会用析构函数释放资源。不能在结构中定义析构函数。只能对类使用析构函数。一个类只能有一个析构函数。无法继承或重载析构函数。无法调用析构函数。它们是被自动调用的。析构函数既没有修饰符,也没有参数。4。索引器索引器允许类或结构的实例就像数组一样进行索引。索引器类似于属性,不同之处在于它们的访问器采用参数。使用索引器:1。使用索引器可以用类似于数组的方式为对象建立索引。2。get访问器返回值。set访问器分配值。3。this关键字用于定义索引器。4。value关键字用于定义由set索引器分配的值。5。索引器不必根据整数值进行索引,由您决定如何定义特定的查找机制。6。索引器可被重载。7。索引器可以有多个形参,例如当访问二维数组时。classDayCollection{stri