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。
这可能对你有用:
public void AddNewItem(A newItem, Func checkForItemInMasterList) { if (checkForItemInMasterList.Invoke(newItem) SubList.Add(newItem); }
然后,您可以在MainClass中使用这样的方法:
public void AddItem(A newItem) { new B().AddNewItem(newItem, x => MasterList.Contains(x)); }
总结一下,它可能看起来像这样:
上述就是C#学习教程:C#嵌套类访问父成员分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
class MainClass { class A { Whatever } class B { List SubSetList; public void AddNewItem(A newItem, Func checkForItemInMasterList) { if (checkForItemInMasterList.Invoke(newItem) SubList.Add(newItem); } } //I don't know how you're adding items to instances of B. //This is purely speculative. public void AddItem(A newItem) { new B().AddNewItem(newItem, x => MasterList.Contains(x)); } List MasterList; }
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1030935.html