gpt4 book ai didi

c# - 禁止对 List 公开添加和删除

转载 作者:可可西里 更新时间:2023-11-01 07:59:54 25 4
gpt4 key购买 nike

在我的 C# 项目中,我有一个包含列表的类

public class MyClass
{
public MyClass parent;
public List<MyClass> children;
...
}

我想阻止类的用户向子列表添加(和删除)一个元​​素,但他仍然能够解析它的元素。我想处理 MyClass 中的添加和删除,提供 AddChild(MyClass item) 和 DeleteChild(MyClass item) 以确保在将项目添加到子列表时,将正确设置该项目的父项。

除了实现我自己的 IList 之外,你知道如何做到这一点吗?

提前致谢,弗兰克

最佳答案

如果您将 List<T> 交给来电者,你无法控制这个;你甚至不能继承 List<T> ,因为添加/删除不是 virtual .

相反,我会将数据公开为 IEnumerable<MyClass> :

private readonly List<MyClass> children = new List<MyClass>();
public void AddChild(MyClass child) {...}
public void RemoveChild(MyClass child) {...}
public IEnumerable<MyClass> Children {
get {
foreach(var child in children) yield return child;
}
}

(yield return 阻止他们只是施放它)

来电者仍然可以使用foreach.Children ,感谢 LINQ,他们也可以做所有其他有趣的事情( WhereFirst 等)。

关于c# - 禁止对 List<T> 公开添加和删除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3052991/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com