从什么我可以告诉,.净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>

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top