C#嵌套类访问父成员

Rob*_*Rob 35 c# oop

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

class MainClass {
  class A { Whatever }

  class B {
    List<A> SubSetList;

    public void AddNewItem(A NewItem) {
       Check MasterListHere ????
    }
  }

  List<A> MasterList;
}
Run Code Online (Sandbox Code Playgroud)

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

我可以将对MasterList的引用传递给B的每个实例,但我最终将拥有多个这些"MasterLists",如果我不需要,我不想要传递大量引用.

Mir*_*lus 29

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

  • 这是一种耻辱,因为它意味着一个类也不是一个namspace,与C++不同. (6认同)
  • 为什么这个如此准确的答案得票数少于被接受的答案,它不能解释任何问题,我们必须实际阅读和解释代码示例才能理解解决方案? (3认同)

Ale*_*lex 26

你可以使用这样的东西:


class B {
    private MainClass instance;

    public B(MainClass instance)
    {
        this.instance = instance;
    }

    List SubSetList;

    public void AddNewItem(A NewItem) {
       Check MasterListHere ????
    }
  }
Run Code Online (Sandbox Code Playgroud)

  • 这个答案需要更多细节,特别是显示主类并描述为什么这是执行此操作的最佳方法(除非有更好的方法)。目前的答案需要太多解释。 (5认同)

Ste*_*idi 5

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

  • 但是您仍然需要传递对实例的引用 (3认同)