C#嵌套类访问父成员

是否可以访问子类中的父成员…

class MainClass { class A { Whatever } class B { List SubSetList; public void AddNewItem(A NewItem) { Check MasterListHere ???? } } List MasterList; } 

所以…我的主要课程将有一个主列表。 它也会有一堆B的实例。在B的每个实例中,我想向特定的B添加新的A,但前提是它们存在于主列表中。 我玩弄MasterList是静态的,它可以工作……直到我有多个MainClass实例……我将拥有它。

我可以将对MasterList的引用传递给B的每个实例,但是我最终会有多个这样的“MasterLists”,如果我不需要,我不想要传递大量的引用。

你可以使用这样的东西:

 class B { private MainClass instance; public B(MainClass instance) { this.instance = instance; } List SubSetList; public void AddNewItem(A NewItem) { Check MasterListHere ???? } } 

在C#中,实际上没有对封闭类的实例的隐式引用,因此您需要传递这样的引用,并且通过嵌套类的构造函数执行此操作的典型方法。

根据您的定义, class B实例可以访问class MainClass的私有方法和静态字段。

无论你是否在A类中嵌套B类,A的任何给定实例仍然需要知道它所持有的B实例。 因此,您可能希望使用对B的引用初始化A并将其保留在字段中。 这可能包括取消嵌套。

是的,但您需要在B实例中引用MainClass实例。

你有没有想过重新上课? 如果在B中使用AddNewItem方法,您可以在MainClass中使用它。 这样就可以很容易地从MainClass中检查MasterList。