我知道这可能很简单,但我似乎无法弄清楚是否可以这样做。
我有以下代码:
public class A {
thisMethod();
public class B {
someMethod();
}
}
public class C {
A myA = new A();
A.B.someMethod();
}
如果我已经实例化了A?
,为什么我不能访问B.提前帮助你!
答案 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();
}
但请注意,不建议公开公开嵌套类。