C#在类型实例化时都有哪些步骤
Posted bloomberg
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#在类型实例化时都有哪些步骤相关的知识,希望对你有一定的参考价值。
C#在类型实例化时都有哪些步骤。
首先我们都知道,对于类对象,在执行构造函数之前,我们需要使用关键字new来为新实例分配内存。new可以根据对象的类型来为其在堆上分配足够的空间,并且将这个对象的所有字段都设为默认值。也就是说,CLR会把该对象的所有引用类型字段设为null,而把值类型字段的所有底层二进制表示位设为0(本质上来说,不论是将值类型或引用类型字段初始化为“默认值”,其实都是把他们底层的数据位设为0)。这是任何类对象实例化的第一步。
静态构造函数和静态字段的构造函数会首先被调用。因为CLR在使用任何类型实例之前一定会先装载该类型,也就需要调用静态构造函数并且初始化静态成员。但是,到底是先初始化静态成员呢,还是调用静态构造函数呢?答案是初始化静态成员,因为CLR必须保证在执行构造函数的方法体时,相关的成员变量应该都可以被安全地使用。同样的道理也适用于实例构造函数和字段,也就是说对象成员的实例化会先于成员构造函数被执行。顺便说一句,类定义直接初始化类\\对象字段的功能是由类\\对象字段初始化器完成的。按1、2、3、4顺序执行!
1、静态字段被实例化。 2、静态构造函数被调用。 3、实例成员字段被实例化。 4、对象构造函数被调用。
以上是关于C#在类型实例化时都有哪些步骤的主要内容,如果未能解决你的问题,请参考以下文章
.Net 4.0 中都有哪些实现 IQueryable<T> 的可实例化类型?
异常抛出:实体数据模型对象实例化时 C# Windows 服务中的“System.IO.FileNotFoundException”