简单的C#问题:嵌套类,辅助功能

时间:2009-08-07 23:32:20

标签: c# class nested

我知道这可能很简单,但我似乎无法弄清楚是否可以这样做。

我有以下代码:

public class A {    
thisMethod();  

 public class B {    
  someMethod();    
   }   
}


public class C {    
A myA = new A();    
A.B.someMethod();    
}

如果我已经实例化了A?

,为什么我不能访问B.

提前帮助你!

2 个答案:

答案 0 :(得分:5)

你需要一个A.B实例来调用A.B上的实例方法:

A.B foo = new A.B();
foo.SomeMethod();

在您的示例中,您甚至没有尝试使用您创建的新实例。

如果您来自Java背景,可能值得指出的是,C#中的嵌套类与Java中的 static 嵌套类类似。从嵌套类的实例到容器类的实例没有隐式引用。 (访问也是相反的 - 在Java中,外部类可以访问其嵌套类的私有成员;在C#中,嵌套类可以访问其外部类的私有成员。)

答案 1 :(得分:0)

您尝试访问它,就像它是静态方法或类A的属性“B”一样。您仍然需要创建它的实例 - 它是一个类声明。我想你正在寻找:

public class A {    

public A()
{
   myB = new B();
}

thisMethod();  
public B myB
{
 get; set;
}

 public class B {    
  someMethod();    
   }   
}


public class C {    
A myA = new A();    
A.myB.someMethod();    
}

但请注意,不建议公开公开嵌套类。

相关问题