_List<T>
_は_IReadOnlyCollection<T>
_インターフェースを実装し、_ReadOnlyCollection<T>
_を返すAsReadOnly()
メソッドを提供します(このメソッドは_IReadOnlyCollection<T>
_を実装します)。
AsReadyOnly()
の使用法/理由は何ですか?その存在は、リストを_IReadOnlyCollection<T>
_として返すだけでは十分ではない1つまたは2つのEdgeケースの匂いがします。
最初は、コストの浪費を防ぐためかもしれませんが、_ReadOnlyCollection<T>
_のItems
アクセサーでそれができるようです。
ところで。 _ReadOnlyCollection<T>
_型のドキュメントは読み取ります
汎用の読み取り専用コレクションの基本クラスを提供します。
私の頭の中では、コンストラクターが
指定したリストの読み取り専用ラッパーである(...)クラスの新しいインスタンスを初期化します。
更新: _ReadOnlyCollection<T>
_のItems
が保護されていることがわかりませんでした。
実際の_List<T>
_を_IReadOnlyList<T>
_として返すだけの場合、呼び出し側はいつでもそれをキャストバックし、必要に応じてリストを変更できます。逆に、AsReadOnly()
を呼び出すと、リストの読み取り専用ラッパーが作成されますが、これは消費者が更新することはできません。
読み取り専用ラッパーは基になるリストに加えられた変更を反映するため、元のリストにアクセスするコードは、読み取り専用バージョンのコンシューマーがそれらの変更を見るという知識でリストを更新できます。