只读清单或不可修改的列表。净4.0
-
13-09-2019 - |
题
从什么我可以告诉,.净4.0仍然缺乏的只读清单。为什么框架仍然缺乏这种功能?这不是一个最常见的碎片的功能 域驱动的设计?
少数几个优点Java有C#这是形式 集合。unmodifiablelist(名单) 方法,这似乎是早就应该在IList<T> 或者清单<T>.
使用 IEnumerable<T>
是最简单的解决方案的问题- ToList
可以使用和返回的副本。
解决方案
您正在寻找 ReadOnlyCollection
,其中已经出现了自.NET2。
IList<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = new ReadOnlyCollection<string>(foo);
或
List<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = foo.AsReadOnly();
这产生了只读视图,这反映给被包装的集合所做的更改。
其他提示
怎么样的 ReadOnlyCollection 已经在框架?
对于那些喜欢使用的接口:.净增加了4.5通用 IReadOnlyList
接口,这是实现通过 List<T>
例如。
它是类似于 IReadOnlyCollection
并增加了一个 Item
indexer财产。
如果在列表的最常见的模式是通过所有的元素,IEnumerable<T>
或IQueryable<T>
迭代可以有效地充当只读列表以及
在2.0你可以调用AsReadOnly
以获取列表的只读版本。或在一个IList
对象包装已有ReadOnlyCollection<T>
。
这有什么错 System.Collections.ObjectModel.ReadOnlyCollection <? / p>
不隶属于 StackOverflow