实例构造器和类(引用类型)
构造器是将类型的实例初始化良好状态的特殊方法。构造器方法在"方法定义元数据表"中始终叫做.ctor(constructor的简称);
创建引用类型的实例时,首先为实例的数据字段分分配呢村,然后初始化对象的附加字段(类型对象指针和同步块索引),最后调用类型的实力构造器来设置对象的初始状态。
实例构造器永远不能被继承。也就是说,类只有类自己定义的实例构造器。
类没有显式定义任何构造器,C#编译器将定义为一个默认的(无参)构造器。
如果类的修饰符为abstract,那么编译器生成的默认构造器的可访问性就为Proteced;
如基类没有提供无参构造器,那么派生类必须显式调用一个基类的构造器,否则编译器会报错。
如果类修饰符为staic(sealed和abstract),编译器根本不会在类的定义生成默认构造器。(静态类在元数据中是抽象密封类)
重要提示:不要在构造器中调用虚方法。
实例构造器和结果(值类型)
值类型(struct)构造器的工作方式与引用类型(Class)的构造器截然不同。CLR总是允许创建值类型的实例,并且没有办法阻止值类型的实例化。
注意:
1.结构不能包含显式的无参数构造函数
2.结构中不能有实例字段初始值设定项
3.在构造器控制返回到调用方之前,结构的字段必须完全赋值
原文:http://www.cnblogs.com/jzhou/p/4901643.html