C# 简单C问题:嵌套类,可访问性
我知道这可能很简单,但我似乎不知道是否有可能做到这一点 我有以下代码:C# 简单C问题:嵌套类,可访问性,c#,class,nested,C#,Class,Nested,我知道这可能很简单,但我似乎不知道是否有可能做到这一点 我有以下代码: public class A { thisMethod(); public class B { someMethod(); } } public class C { A myA = new A(); A.B.someMethod(); } 如果我已经实例化了A,为什么不能访问B 提前谢谢你的帮助 您试图访问它,就像它是一个静态方法或一个名为B的类a
public class A {
thisMethod();
public class B {
someMethod();
}
}
public class C {
A myA = new A();
A.B.someMethod();
}
如果我已经实例化了A,为什么不能访问B
提前谢谢你的帮助 您试图访问它,就像它是一个静态方法或一个名为B的类a的属性一样。您仍然需要创建它的实例—它是一个类声明。我想你在寻找:
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();
}
不过需要注意的是,不建议公开公开嵌套类。您试图访问它,就像它是一个静态方法或一个名为B的类a属性一样。您仍然需要创建它的实例—它是一个类声明。我想你在寻找:
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();
}
不过需要注意的是,不建议公开公开嵌套类。您需要A.B的实例来调用A.B上的实例方法:
A.B foo = new A.B();
foo.SomeMethod();
在您的示例中,您甚至没有尝试使用您创建的新实例
如果您有Java背景,那么可能需要指出,C中的嵌套类与Java中的静态嵌套类类似。从嵌套类的实例到容器类的实例没有隐式引用。访问也是另一种方式——在Java中,外部类可以访问其嵌套类的私有成员;在C中,嵌套类可以访问其外部类的私有成员。您需要A.B的实例来调用A.B上的实例方法:
A.B foo = new A.B();
foo.SomeMethod();
在您的示例中,您甚至没有尝试使用您创建的新实例
如果您有Java背景,那么可能需要指出,C中的嵌套类与Java中的静态嵌套类类似。从嵌套类的实例到容器类的实例没有隐式引用。访问也是另一种方式——在Java中,外部类可以访问其嵌套类的私有成员;在C中,嵌套类可以访问其外部类的私有成员。我想我这样做的原因只是为了逻辑分组。所以我会用Player.Controls和Player.Library代替一个大类中的所有方法。但是为什么要嵌套它们呢?为什么不在一个播放器名称空间中创建完全独立的类呢?我想我这样做的原因只是为了逻辑分组。所以我会用Player.Controls和Player.Library代替一个大类中的所有方法。但是为什么要嵌套它们呢?为什么不在播放器名称空间中创建完全独立的类呢?