类型基础
1,所有类型的基类型:System.Object
2,System.Object的共有方法:Equals,GetHashCode,ToString,GetType。
保护方法:MemberwiseClone,Finalize
3,new操作符的工作
1),从managed heap中分配内存空间
2),初始化对象的附加成员:两个:指向类型方法表的指针,SyncBlockIndex
3),传入制定参数,调用构造方法
类型转换
1,CLR允许我们将类型转换为原来类型或它的任意一个基类型。如果要转换为它的派生类型要显示转换:
Object o = new Employee();
Employee e = (Employee)o;
2,is操作符 o is Object 如果o是null则总返回false
3,as语句是用来简化is语句的一个双重判断的。
if(o is Employee){
Employee e = (Employee)o;
.......
}
//下面这种方法只做一次类型检查,再做一次判断效率高
Employee e = o as Employee
if(e != null){
.......
}
命名空间和程序集
1, 命名空间的一个好处:程序看起来简洁。另一个好处解决命名冲突。
2,using语句试着在类型名前加不同的前缀直道找到一个匹配的为止
3,CLR对命名空间一无所知,它都是用全名称来找类型的
4,程序集C#编译器要知道去哪里找命名空间(类型)就是去程序集中找。默认程序集:MSCorLib.dll包含了 所有.net框架类库
早期:MSCorLib.dll:Microsoft Common Object Runtime Library
ECMA:Multilanguage Standard Common Object Runtime Library
5 用起别名的方式来避免不同命名空间相同类型的问题
6 using只支持命名空间,不支持程序集(知道就行了)
7 程序集和命名空间没有必然联系。
1,所有类型的基类型:System.Object
2,System.Object的共有方法:Equals,GetHashCode,ToString,GetType。
保护方法:MemberwiseClone,Finalize
3,new操作符的工作
1),从managed heap中分配内存空间
2),初始化对象的附加成员:两个:指向类型方法表的指针,SyncBlockIndex
3),传入制定参数,调用构造方法
类型转换
1,CLR允许我们将类型转换为原来类型或它的任意一个基类型。如果要转换为它的派生类型要显示转换:
Object o = new Employee();
Employee e = (Employee)o;
2,is操作符 o is Object 如果o是null则总返回false
3,as语句是用来简化is语句的一个双重判断的。
if(o is Employee){
Employee e = (Employee)o;
.......
}
//下面这种方法只做一次类型检查,再做一次判断效率高
Employee e = o as Employee
if(e != null){
.......
}
命名空间和程序集
1, 命名空间的一个好处:程序看起来简洁。另一个好处解决命名冲突。
2,using语句试着在类型名前加不同的前缀直道找到一个匹配的为止
3,CLR对命名空间一无所知,它都是用全名称来找类型的
4,程序集C#编译器要知道去哪里找命名空间(类型)就是去程序集中找。默认程序集:MSCorLib.dll包含了 所有.net框架类库
早期:MSCorLib.dll:Microsoft Common Object Runtime Library
ECMA:Multilanguage Standard Common Object Runtime Library
5 用起别名的方式来避免不同命名空间相同类型的问题
6 using只支持命名空间,不支持程序集(知道就行了)
7 程序集和命名空间没有必然联系。
浙公网安备 33010602011771号