Chr*_*s S 97 .net c# java readonly-collection
据我所知,.NET 4.0仍然缺少只读列表.为什么框架仍然缺乏此功能?这不是域驱动设计中最常用的功能之一吗?
Java对C#的优势之一就是Collections.unmodifiablelist(list)方法的形式,它似乎早在IList <T>或List <T>中已经过期了.
使用IEnumerable<T>是问题的最简单的解决方案 - ToList可以使用并返回副本.
Luk*_*keH 141
你正在寻找ReadOnlyCollection,自.NET2以来一直存在.
IList<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = new ReadOnlyCollection<string>(foo);
Run Code Online (Sandbox Code Playgroud)
要么
List<string> foo = ...;
// ...
ReadOnlyCollection<string> bar = foo.AsReadOnly();
Run Code Online (Sandbox Code Playgroud)
这将创建一个只读视图,该视图反映对包装集合所做的更改.
Ana*_*tts 11
如果列表中最常见的模式是迭代所有元素,IEnumerable<T>或者IQueryable<T>也可以有效地充当只读列表.
Mar*_*tin 11
对于那些喜欢使用接口的人:.NET 4.5添加了通用IReadOnlyList接口,List<T>例如它.
它类似于IReadOnlyCollection并添加了一个Item索引器属性.