パブリック静的クラスに次のコードがあります。
public static class MyList
{
public static readonly SortedList<int, List<myObj>> CharList;
// ...etc.
}
.. ただし、を使用しても、readonly
別のクラスからリストに項目を追加できます。
MyList.CharList[100] = new List<myObj>() { new myObj(30, 30) };
または
MyList.CharList.Add(new List<myObj>() { new myObj(30, 30) });
CharList の実装を変更せずに読み取り専用にする方法はありますか (変更するといくつかの機能が壊れます)? 実装を変更する必要がある場合 (変更不可にする場合)、最善の方法は何でしょうか? List<T, T> にする必要があるため、ReadOnlyCollection では不十分です。
ベストアンサー1
修飾子readonly
値は割り当てられた宣言またはコンストラクタ以外では、ない割り当てられたオブジェクトが不変になることを意味します。
オブジェクトを不変にしたい場合は、不変な型を使用する必要があります。ReadOnlyCollection<T>
あなたが言及したのは不変コレクションの例です。辞書で同じことを実現する方法については、この関連質問を参照してください。