我写了一个小代码。
class Program
{
static void Main()
{
Nested.Nested2.DoSomething();
}
class Nested
{
public class Nested2
{
public static void DoSomething()
{ }
}
}
}
有一个类Program
,它有嵌套的类Nested
。类Nested
也有嵌套类 - Nested2
使用静态方法DoSomething()
。
在Main
我致电DoSomething()
。
我的问题:为什么我可以在Main
中调用此方法。我知道该方法是static
,如果此方法位于Nested
类(不是Nested2
)内,我可以调用它。为什么我不需要创建Nested
的实例,然后像这样调用此方法:
Nested nested = new Nested();
nested.Nested2.DoSomething();
如果Nested2
不是Nested.Nested2
而未创建Nested
的实例,为什么我才能访问Nested2
static
}。
提前致谢。
答案 0 :(得分:6)
内部类的完整名称实际上是Nested.Nested2
。在这种情况下,Nested
不引用类Nested
的实际实例,也不引用任何静态成员,但可以将其视为名称空间。
这同样适用于Nested
,在Program.Nested
级之外实际上称为Program
。因此创建实例(假设Nested
是public
,这不是你的情况):
var instance = new Program.Nested();
或Nested2
- Program
内的课程:
var instance = new Nested.Nested2();
或来自Nested2
以外的Program
课程:
var instance = new Program.Nested.Nested2();
这与您的成员或类似静态但与该类的实际名称的事实无关。