c#中顶级类的默认访问说明符是internal 但是当我观察到IL代码时,它如下
.class private auto ansi beforefieldinit n.A
extends [System.Runtime]System.Object
{
} // end of class n.A
而不是汇编关键字为什么编译器在上面的IL代码中使用私有关键字?
答案 0 :(得分:1)
IL定义的内容与C#不同;在IL中有可见性和可访问性。详细信息在ECMA 335的II.10.1和表II.10.1.1中。顶级类型的唯一两个有效选项是public
和private
- 其他所有与{{1}相关的选项},即类型中的类型。
基本上,它执行此因为规范要求:
未嵌套在另一个类型中的类型应具有一个可见性(私有或公共),并且不具有可访问性。
对于顶级类型,没有nested *
或assembly
这样的内容。