据我所知,.NET 4.0仍然缺less只读列表。 为什么框架仍然缺乏这种function? 这不是这个领域驱动devise最常见的function之一吗? Java相对于C#来说less有的优势之一就是Collections.unmodifiablelist(list)方法的forms,它在IList <T>或List <T>中看起来已经过时了很久。 使用IEnumerable<T>是问题的最简单的解决scheme – ToList可以使用并返回一个副本。
如果调用代码只遍历集合,是否有任何理由将内部集合公开为ReadOnlyCollection而不是IEnumerable? class Bar { private ICollection<Foo> foos; // Which one is to be preferred? public IEnumerable<Foo> Foos { … } public ReadOnlyCollection<Foo> Foos { … } } // Calling code: foreach (var f in bar.Foos) DoSomething(f); 正如我所看到的IEnumerable是ReadOnlyCollection接口的一个子集,它不允许用户修改集合。 所以,如果IEnumberable接口是足够的那就是使用的那个。 这是一个适当的推理方式,或者我错过了什么? 谢谢/ Erik