7

使用这种方法来保存字符串的只读列表是否很好,例如,ADO.NET 中的字段列表。

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

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

4

3 回答 3

8

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

简而言之:不要ReadOnlyCollection习惯性地使用它,在有意义的时候使用它。

于 2009-07-06T21:26:30.813 回答
6

如果可能,更喜欢静态类型检查。IEnumerable<string>是只读的。

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

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

于 2009-07-06T21:28:27.533 回答
4

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

于 2011-11-09T09:49:07.937 回答