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" });
それともこれは余分な解決策ですか?
可能であれば、静的型チェックを優先してください。IEnumerable<string>
読み取り専用です。
IEnumerable<string> list = new List<string> { "type", "currency", "date", "amount" };
後続のコードでリストを変更することはできず、リフレクションを使用しない限り、間違いはコンパイル時に検出されますが、リフレクションを使用して実行時チェックを回避することもできます。
.NET 2.0に戻ると、ListクラスにはAsReadOnly()
メソッドがありました。ジェネリックが登場したとき、List<T>
それも手に入れました。これがMSDNリファレンスページです。