Csharp/C#教程:C#嵌套类访问父成员分享


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

(0)
上一篇 2022年1月13日
下一篇 2022年1月13日

精彩推荐