[英]Object creation in C# question
我正在讨论一些c#教程,其中说明了以下内容:
“在找到属性类之后,编译器将检查该类是否允许该属性。然后它将检查与属性use中指定的参数匹配的构造函数。如果找到一个,则创建该对象的实例通过调用具有指定值的构造函数“
该段的名称是“编译过程”,它指的是编译器处理属性的方式。 我很抱歉无知,但不应该在运行时创建实例吗?
谢谢。
属性定义类的元数据 - 类的每个实例(即对象)将共享相同的属性值。 此元数据与类型定义一起存储,类型定义在编译时从源文件计算一次。
由于有些属性也会影响编译器 ,如果编译器在编译时实例化它们,我也不会感到惊讶。 所以呢?
有一个“编译”过程生成一个使用.NET框架解释的中间代码。
这就是他们谈论编译过程的原因。
编译器仅创建描述属性构造和对其属性的赋值的元数据。 属性本身仅在您使用反射列出属性时进行实例化。 我认为每次调用反射都会创建该属性的新实例。
而且我认为有一种方法(与仅反射上下文相关)直接从元检查属性而根本不实例化它。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.