.NET 4.0 中的只读列表或不可修改列表

2022-08-31 09:51:17

据我所知,.NET 4.0仍然缺少只读列表。为什么框架仍然缺少此功能?这难道不是领域驱动设计中最常见的功能之一吗?

Java相对于C#的少数优势之一是以Collegions.unmodifiablelist(list)方法的形式出现,这在IList<T>或List<T>中似乎已经过期了。

使用是问题的最简单解决方案 - 可以使用并返回副本。IEnumerable<T>ToList


答案 1

您正在寻找 ReadOnlyCollection,它自 .网2.

IList<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = new ReadOnlyCollection<string>(foo);

List<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = foo.AsReadOnly();

这将创建一个只读视图,该视图反映对包装的集合所做的更改。


答案 2

对于那些喜欢使用接口的人:.NET 4.5添加了通用的IReadOnlyList接口,例如,该接口由实现。List<T>

它类似于 IReadOnlyCollection,并添加了一个索引器属性。Item


推荐