摘要: CLR还支持类型构造器,也称为静态构造器。c#类型构造器可应用引用类型和值类型,永远没有参数。主要作用是:设置类型中静态字段的初始化。类型构造器不一定要在类中定义,但是最多也只能有一个。例:class SomeType{ static SomeType(){}}jit编译器在编译一个方法时,会查看代码引用哪些类型。任何类型定义了类型构造器,jit编译器都会检查当前AppDomain是否已经执行了这个类型构造器,如果没有就执行,已经执行了就直接返回,不再次执行。在多线程的环境下,可能同一时间有多个执行相同的方法,CLR希望每一个AppDomain中一个类型构造器只执行一次,在调用类型构造器时,使 阅读全文
posted @ 2012-10-16 17:37 八神吻你 阅读(785) 评论(0) 推荐(0) 编辑
摘要: CLR总是允许创建值类型的实例。另外值类型不一定需要定义构造器,c#编译器不会为值类型生成默认的无参构造器。引用类型包含值类型字段,引用类型初始化后,值类型默认会被初始化为0、Null。CLR允许为值类型定义构造器,但是构造器的调用,就必须显式的写代码来调用它们。CLR不允许为值类型定义无参构造器。只能定义有参构造器,并且构造器中必须为值类型中的所有字段全部赋值,否则报错。c#中虽然没有无参构造器,但是可以使用这个语法初始化在内部的字段:StructType st = new StructType();//为内部字段初始化0或者null所以对定义有参构造器的参考写法:public Struct 阅读全文
posted @ 2012-10-16 16:14 八神吻你 阅读(329) 评论(0) 推荐(0) 编辑
摘要: 引用类型构造器是将类型的实例初始化为良好状态的一种特殊方法。创建一个引用类型的实例时,首先为实例的数据字段分配内存,然后初始化对象的附加字段(对象指针、同步块索引),最后调用类型中定义的实例构造器来设置对象的初始化状态。构造引用类型的对象时,在调用类型的实例构造器之前,为对象分配所有字段的内存总是被先归零或为null。实例构造器永远不能被继续。如果定义的类中没有显式构造器,c#编译器将定义一个默认构造器,在它的实现中,只是简单调用基类的无参构造器。所以:public class SomeType{}等价于public class SomeTyoe{ public SomeType():base 阅读全文
posted @ 2012-10-16 14:41 八神吻你 阅读(318) 评论(0) 推荐(0) 编辑
摘要: 常量:是一个特殊的符号,有一个从不变化的值。它的值是在编译时确定的。编译器将常量保存到程序集的元数据中,所有只能是编译器认识的基元类型作为常量。常量被看成类的一部分,是看出静态成员。代码引用一个常量符号,会在定义常量的元数据中查找该符号,提取之,并嵌入代码,生成的IL中是值本身。在c#中使用的是const关键字。字段:已一种数据成员,可以容纳任何的数据类型,不仅仅想常量一样只能存储基元类型。CLR支持类型字段和实例字段类型字段:用于容纳字段数据的动态内存是在类型对象中分配的,而类对象是在类型加载到一个AppDomain中创建的。通常是在引用该类型的任何方法首次进行JIT编译的时候。实例字段:用 阅读全文
posted @ 2012-10-16 13:52 八神吻你 阅读(417) 评论(0) 推荐(0) 编辑