中间语言代码中顶级类的访问说明符是什么?

时间:2018-06-13 09:51:11

标签: c# access-modifiers

c#中顶级类的默认访问说明符是internal 但是当我观察到IL代码时,它如下

.class private auto ansi beforefieldinit n.A
   extends [System.Runtime]System.Object
{
} // end of class n.A

而不是汇编关键字为什么编译器在上面的IL代码中使用私有关键字?

1 个答案:

答案 0 :(得分:1)

IL定义的内容与C#不同;在IL中有可见性可访问性。详细信息在ECMA 335的II.10.1和表II.10.1.1中。顶级类型的唯一两个有效选项是publicprivate - 其他所有与{{1}相关的选项},即类型中的类型。

基本上,它执行此因为规范要求

  

未嵌套在另一个类型中的类型应具有一个可见性(私有公共),并且不具有可访问性。

对于顶级类型,没有nested *assembly这样的内容。