我写了一个小代码。
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
不是,为什么我可以访问 Nested2
(Nested.Nested2
) 而无需创建 Nested
的实例静态
。
提前致谢。
最佳答案
您的内部类的完整名称实际上是 Nested.Nested2
。在这种情况下,Nested
既不引用类 Nested
的实际实例,也不引用任何静态成员,但可以被视为命名空间。
这同样适用于 Nested
,当在您的 Program
类之外时,它实际上被称为 Program.Nested
。因此创建实例(假设 Nested
是 public
,但在您的情况下不是):
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/