只读字符串列表

aba*_*hev 7 .net c# collections list readonly

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

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

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

Joh*_*eek 8

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

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


Dan*_*ker 6

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

IEnumerable<string> list = new List<string> { "type", "currency", "date", "amount" };
Run Code Online (Sandbox Code Playgroud)

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