Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用内部或私有添加、删除功能创建类型化集合/列表的最佳实践?_C#_.net_Collections - Fatal编程技术网

C# 使用内部或私有添加、删除功能创建类型化集合/列表的最佳实践?

C# 使用内部或私有添加、删除功能创建类型化集合/列表的最佳实践?,c#,.net,collections,C#,.net,Collections,我经常公开类型化的集合和列表。通常在公开集合和列表时,我不喜欢将Add和Remove方法公开。在较旧版本的.Net中,我实现了IEnumerable,但这是一项大量工作 更好的选择是什么 我看到过类似的问题,但不是关于添加/删除访问器的问题 谢谢。你喜欢这个吗 编辑 既然你想 …以便能够在内部或私下添加到集合/列表中 您可以有一个私有的IList来添加对象,而ReadOnlyCollection将是此列表的包装器。由于它是一个包装器,对基础列表的所有更改都将反映在此只读集合中。公开接口: IEn

我经常公开类型化的集合和列表。通常在公开集合和列表时,我不喜欢将Add和Remove方法公开。在较旧版本的.Net中,我实现了IEnumerable,但这是一项大量工作

更好的选择是什么

我看到过类似的问题,但不是关于添加/删除访问器的问题

谢谢。

你喜欢这个吗

编辑

既然你想

…以便能够在内部或私下添加到集合/列表中

您可以有一个私有的
IList
来添加对象,而
ReadOnlyCollection
将是此列表的包装器。由于它是一个包装器,对基础列表的所有更改都将反映在此只读集合中。

公开接口:

IEnumerable<T>
IEnumerable

我希望能够在内部或私下添加到收藏/列表中。ReadOnlyCollection似乎只允许您使用最终项进行构造。+1-我正在考虑保留对用于构造ReadOnlyCollection的列表的引用。很高兴你已经确认了。在这种情况下,我有嵌套的集合,这仍然会使它有点尴尬,但仍然可行。我将使用仅受保护的添加和删除方法来创建一个基本集合类型,因为这将是解决我当前问题的最佳解决方案。你说得对,这是正确的答案。如果从ReadOnlyCollection继承并接受列表作为构造函数参数,则可以在类中保留引用,并将其传递给基构造函数。然后,我可以向类中添加内部的add和Remove方法。这将允许我在需要时嵌套自定义类(而不是使用字符串)。看看这是否有帮助。