调用静态嵌套(深度> = 2)方法

时间:2017-01-25 12:51:15

标签: c# .net

我写了一个小代码。

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}。

提前致谢。

1 个答案:

答案 0 :(得分:6)

内部类的完整名称实际上是Nested.Nested2。在这种情况下,Nested不引用类Nested的实际实例,也不引用任何静态成员,但可以将其视为名称空间。

这同样适用于Nested,在Program.Nested级之外实际上称为Program。因此创建实例(假设Nestedpublic,这不是你的情况):

var instance = new Program.Nested();

Nested2 - Program内的课程:

var instance = new Nested.Nested2();

或来自Nested2以外的Program课程:

var instance = new Program.Nested.Nested2();

这与您的成员或类似静态但与该类的实际名称的事实无关。