使用这种方法来保存字符串的只读列表是否很好,例如,ADO.NET 中的字段列表。
var list = new System.Collections.ObjectModel.ReadOnlyCollection<string>(
new List<string>(4) { "type", "currency", "date", "amount" });
或者这是一个多余的解决方案?
使用这种方法来保存字符串的只读列表是否很好,例如,ADO.NET 中的字段列表。
var list = new System.Collections.ObjectModel.ReadOnlyCollection<string>(
new List<string>(4) { "type", "currency", "date", "amount" });
或者这是一个多余的解决方案?
取决于你的立场。ReadOnlyCollection
当您有一个内部可修改列表需要提供给不允许更改列表的其他代码时,效果非常好。对于简单的代码,使用ReadOnlyCollection
可能是矫枉过正。如果代码很大并且有其他程序员(或者你,在路上)可能不小心尝试修改列表的风险,那么它可能是值得的。
简而言之:不要ReadOnlyCollection
习惯性地使用它,在有意义的时候使用它。
如果可能,更喜欢静态类型检查。IEnumerable<string>
是只读的。
IEnumerable<string> list = new List<string> { "type", "currency", "date", "amount" };
后续代码无法修改列表,并且错误将在编译时被捕获 - 除非您使用反射,但反射也可以用于规避运行时检查。
回到 .NET 2.0,List 类有一个AsReadOnly()
方法。当泛型出现时,List<T>
它也得到了它。这是MSDN 参考页。