readonly キーワードは List<> を ReadOnly にしませんか? 質問する

readonly キーワードは List<> を ReadOnly にしませんか? 質問する

パブリック静的クラスに次のコードがあります。

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>あなたが言及したのは不変コレクションの例です。辞書で同じことを実現する方法については、この関連質問を参照してください。

おすすめ記事