【发布时间】:2016-02-04 13:03:11
【问题描述】:
在 C# 5.0 语言规范中它说:
请注意,常量和嵌套类型被归类为静态成员。
所以如果我写:
class A
{
int a;
class B
{
public void foo()
{
int j = a; // ERROR
}
}
}
a 到 j 的赋值给我一个 CS0120 错误
"非静态字段、方法或 属性“成员””
所以我可以理解foo 也是隐式静态的。
但是,当我查看反编译代码和 IL 代码时,没有任何静态关键字的指示!
internal class A
{
private class B
{
public void foo()
{
}
}
private int a;
}
// Nested Types
.class nested private auto ansi beforefieldinit B
extends [mscorlib]System.Object
{
// Methods
.method public hidebysig
instance void foo () cil managed
{
}
...
}
嵌套类型真的是所有方法都隐式静态的静态类型吗?
【问题讨论】:
-
它说它是一个静态成员,而不是嵌套类是静态的。
-
根本没有静态成员。
a是实例成员,不是吗?
标签: c# inner-classes