只读字符串列表

时间:2009-07-06 21:09:55

标签: c# .net list collections readonly

使用这种方法保留字符串的只读列表(例如,ADO.NET中的字段列表)是否合适。

var list = new System.Collections.ObjectModel.ReadOnlyCollection<string>(
           new List<string>(4) { "type", "currency", "date", "amount" });

或者这是一个多余的解决方案?

3 个答案:

答案 0 :(得分:8)

取决于你的立场。当您有一个内部可修改列表需要提供给不允许更改列表的其他代码时,ReadOnlyCollection非常有效。对于简单的代码,使用ReadOnlyCollection可能有点过分。如果代码很大并且存在风险,那么其他程序员(或者你在路上)可能会意外地尝试修改列表,那么它可能是值得的。

简而言之:不要惯用ReadOnlyCollection,在有意义时使用它。

答案 1 :(得分:6)

如果可能,请选择静态类型检查。 IEnumerable<string>只读。

IEnumerable<string> list = new List<string> { "type", "currency", "date", "amount" };

后续代码无法修改列表,并且会在编译时捕获错误 - 除非您使用反射,但也可以使用反射来绕过运行时检查。

答案 2 :(得分:4)

回到.NET 2.0,List类有一个AsReadOnly()方法。当泛型出现时,List<T>也得到了它。这是MSDN reference page