阅读某本C#书所写的笔记

阅读某本C#书所写的笔记
1)decimal,即十进制类型,是一种高精度、128位数据类型,它所表示的范围从大约1.0*10^-28到7.9*102^28的28至29位有效数字,注意该精度是以位数(digits)而不是以小数位(decimal places)来表示的。
2)decimal类型的变量在赋值时要在值后面加m下标,否则将被编译器当作double类型处理。
3)System.delegate 代表,引用类型,用于指向一个方法,定义方法:delegate int MyDelegate();
4)多维数组定义一例:int[,] a=new int[,]{{1,2,3},{4,5,6}}
5)多维数组定义另一例:int[][] b=new int[3][];b[0]=new int[]{1,2,3};b[1]=new int[]{1,2,3,4,5,6};b[2]=new int[]{1,2,3,4,5,6,7,8,9};
6)可以在变量名前面加上@,这主要是为了在与其他语言交互时避免冲突,一般情况下不推荐使用。
7)变量有以下以种:静态变量、非静态变量、数组元素、值能数、引用参数、输出参数、局部参数。
8)常量const修饰符有:new,public,protected,internal,private。
9)隐式枚举类型允许把十进制整数0转换为任何枚举类型,对应其他的整数则不存在这种隐式转换。
10)显式转换有可能丢失信息或导致异常抛出。
11)常量1.0默认为double类型,若要使用float型,可写成1.0f,即在数值后面加个f。
12)在逻辑表达式的求值过程中,不是所有的逻辑操作符都被执行,这种情况称为“短路”。
13)一般来说每个switch项都以break,goto case,goto default结束,但实际上任何一种不导致“遍历”的结构都是允许的。
14)C#中提供了析构函数,用于专门释放被占用的系统资源;析构函数的名称为“~类名”,它不接收任何参数,不返回值,不能被继承;C#提供垃圾收集器帮助我们解决释放资源的工作。
15)方法修饰符可以是:new,public,protected,internal,private,static,virtual,sealed,override,abstract,extern。对于使用了abstract,extern修饰符的方法,方法的执行体仅仅只有一个简单的分号。其他的方法执行体应包含调用该方法所要执行的语句。
16)方法参数四种类型:值类型(不需修饰符)、引用类型(以ref修饰符声明)、输出类型(以out修饰符声明)、数组型类型(以params修饰符声明)
17)如果方法的形参表中包含了数组型参数,那么它必须在参数表中位于最后。另外,参数只允许是一维数组。比如:string[],string[][]类型都可以作为数组型参数,而string[,]则不能。最后,数组型参数不能再有ref和out修饰符。
18)静态方法只能访问类中的静态成员。
19)操作符重载方法:在定义类方法时,在方法名称后面加上“[空格]operator[空格][具体的操作符]”,如以下方法:public static Player operator ++(Player p){method body...}
20)可重载的操作符:+,-,!,~,++,--,true,false,*,/,%,&,|,^,<<,>>,==,!=,>,<,>=,<=。注:这里列出的操作符之间用“,”隔开。
21)不可重载的操作符:=,&&,||,?:,new,typeof,sizeof,is
22)域的修饰符:new,public,protected,internal,private,static,readonly
23)属性的修饰符:new,public,protected,internal,private,static,virtual,sealed,override,abstract,以上修饰符中,static,virtual,override,abstract不能同时使用。
24)事件的修饰符:new,public,protected,internal,private,static,virtual,sealed,override,abstract,以上修饰符中,static,virtual,override,abstract不能同时使用。
25)构造函数和析构函数不能被继承。
26)在派生类中覆盖基类中的方法时,在方法前面加上new关键字可关闭编译器的警告。
27)base关键字主要是为派生类调用基类成员提供一个简写的方法。
28)C#中的多态性有两种:编译时的多态性和运行时的多态性;编译时的多态性是通过重载实现的,运行时的多态性是通过虚成员实现的;编译时的多态性为我们提供了运行速度快的特点,而运行时的多态性则带来了高度的灵活和抽象的特点。
29)方法在使用了virtual修饰符之后,不允许再有static,abstract或override修饰符。
30)在派生类中重新定义基类的虚方法时,要求方法名称、返回值类型、参数表中的参数个数、类型、顺序都必须与基类中的虚方法完全一致。
31)在派生类中声明对虚方法的重载,要求在声明中加上override关键字,而且不能有new,static或virtual修饰符。
32)抽象类只能作为其他类的基类,不能被实例化。
33)只能在抽象类中声明抽象方法,抽象方法不包含具体的实现内容,不能再使用static或virtual修饰符,不能出现{},如:public abstract void speak();
34)抽象类中的抽象方法在派生类中不能使用base关键字来进行访问。
35)可以利用抽象方法来重载基类的虚方法,这时基类中的虚方法的执行代码这被“拦截”了。
36)密封类(使用sealed修饰符的类)不能被其他类继承。
37)将方法密封可防止方法所在的类的派生类对该方法重载。
38)不是类的每个成员方法都可以作为密封方法,密封方法必须对基类的虚方法进行重载,提供具体的实现方法。
39)和类的成员方法一样,我们也可以定义属性的重载、虚属性、抽象属性、以及密封属性的概念。
40)接口仅可以使用下列修饰符:new,public,protected,internal,private。
41)接口的成员可以是属性、方法、事件和索引指示器。
42)C#中类继承只允许单继承,但接口允许多继承,多个父接口之间用“,”隔开,被继承的接口应该是可以访问的,如从private类型和internal类型的接口中继承就是不允许的。
43)接口成员的默认访问方式是public,接口成员不能包含任何修饰符。
44)由于接口允许多继承,所以要注意接口成员的是否有二义性。
45)显式接口成员只能通过接口调用。
46)显式接口成员执行体不能使用任何访问修饰符。
47)使用private,protected和static修饰符的成员不能参与实现接口映射。
48)如果不显式地重新实现接口,派生类就无法改变从基类中继承来的接口映射。但是,当一个接口方法被映射到类的一个虚方法时,派生类就可以重载这个虚方法,并且改变这个接口的实现。
49)继承了接口实现的类可以对接口进行重实现。
50)有关接口的几个概念:显式接口成员执行体、
50)各个流:Stream,BinaryReader,BinaryWriter,File,Directory,FileStream,TextReader,TextWriter,StringReader,StringWriter,StreamReader,StreamWriter,BufferedStream,MemoryStream,NetworkStream;对网络文件进行操作使用IsolatedStorage类处理,不用流。

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=789651

posted @ 2006-10-29 20:06  代码缔造的帝国  阅读(259)  评论(0编辑  收藏  举报