C#问题中的对象创建

时间:2010-11-21 16:02:15

标签: c# instantiation

我正在讨论一些c#教程,其中说明了以下内容:

“在找到属性类之后,编译器将检查该类是否允许该属性。然后它将检查与属性use中指定的参数匹配的构造函数。如果找到一个,则创建一个实例通过使用指定值“

调用构造函数来调用该对象

这一段的名称是“编译过程”,它指的是编译器处理属性的方式。我很抱歉无知,但不应该在运行时创建实例吗?

感谢。

4 个答案:

答案 0 :(得分:3)

属性定义类的元数据 - 类的每个实例(即对象)将共享相同的属性值。此元数据与类型定义一起存储,类型定义在编译时从源文件计算一次。

答案 1 :(得分:2)

由于还有affect the compiler的属性,如果编译器在编译时实例化它们,我不会感到惊讶。那是什么?

答案 2 :(得分:1)

有一个“编译”过程,它生成一个使用.NET框架解释的中间代码。

这就是为什么他们在谈论编译过程。

答案 3 :(得分:0)

编译器仅创建描述属性构造和属性赋值的元数据。 属性本身仅在您使用反射列出属性时进行实例化。我认为每次调用反射都会创建该属性的新实例。

我认为有一种方法(与仅反射上下文相关)直接从元检查属性而不实例化它。