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

标签 c# .net

我写了一个小代码。

class Program
{
    static void Main()
    {
        Nested.Nested2.DoSomething();
    }

    class Nested
    {
        public class Nested2
        {
            public static void DoSomething()
            { }
        }
    }
}

Program 有嵌套类 NestedNested 类也有嵌套类 - Nested2 带有静态方法 DoSomething()

Main 中,我调用 DoSomething()

我的问题:为什么我可以在Main中调用这个方法。我知道该方法是 static,如果此方法在 Nested 类(不是 Nested2)中,我可以调用它。为什么我不需要创建 Nested 的实例,然后像这样调用此方法:

Nested nested = new Nested();
nested.Nested2.DoSomething();

如果 Nested2 不是,为什么我可以访问 Nested2 (Nested.Nested2) 而无需创建 Nested 的实例静态

提前致谢。

最佳答案

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

这同样适用于 Nested,当在您的 Program 类之外时,它实际上被称为 Program.Nested。因此创建实例(假设 Nestedpublic,但在您的情况下不是):

var instance = new Program.Nested();

或者对于 Program 中的 Nested2 类:

var instance = new Nested.Nested2();

或者对于您的 Nested2 - 来自 Program 的类:

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

这与您的成员或静态类无关,而是与类的实际名称有关。

关于c# - 调用静态嵌套(深度> = 2)方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41852086/

相关文章:

.NET DNS 类 powershell 后台作业可能吗?

.NET 网络服务 - 快速确认,但在后台继续处理

.NET 泛型术语 - 打开/关闭、未绑定(bind)/构造

c# - Unity MLAPI ServerRPC 没有被调用

c# - 使用 System.IO.Packaging.Package 在内存中创建 ZIP 文件

c# - 在C#.Net中自动调用函数

c# - "Error converting data type double to float"插入到 SQL Server 中的 DECIMAL 列

c# - 单个ascx页面可以使用多个代码文件吗?

c# - 在后台每 5 分钟执行一次函数

.net - 未知软件异常 0xe0434352