C#中类的默认Access修饰符是internal.但是在使用ildasm检查类时,它将类显示为私有.
.class private auto ansi beforefieldinit ConsoleApplication1.Program
extends [mscorlib]System.Object
{
} // end of class ConsoleApplication1.Program
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?
IL没有概念internal,内部类表示为private它们位于根命名空间中,或者assembly它们嵌套在另一个类型中.
namespace ConsoleApplication1
{
internal class ExplicitInternal
{
private class ExplicitPrivate
{
}
internal class ExplicitNestedInternal
{
}
public class ExplicitNestedPublic
{
}
}
public class ExplicitPublic
{
}
class ImplicitInternal
{
private class ImplicitPrivate
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
变
.namespace ConsoleApplication1
{
.class private auto ansi beforefieldinit ConsoleApplication1.ExplicitInternal
extends [mscorlib]System.Object
{
.class nested private auto ansi beforefieldinit ExplicitPrivate
extends [mscorlib]System.Object
{
}
.class nested assembly auto ansi beforefieldinit ExplicitNestedInternal
extends [mscorlib]System.Object
{
}
.class nested public auto ansi beforefieldinit ExplicitNestedPublic
extends [mscorlib]System.Object
{
}
}
.class public auto ansi beforefieldinit ConsoleApplication1.ExplicitPublic
extends [mscorlib]System.Object
{
}
.class private auto ansi beforefieldinit ConsoleApplication1.ImplicitInternal
extends [mscorlib]System.Object
{
.class nested private auto ansi beforefieldinit ImplicitPrivate
extends [mscorlib]System.Object
{
}
}
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9165 次 |
| 最近记录: |