データ構造の要件は 2 つだけです。
- 読み取り専用にする
- 順序を保持します(常に特定の順序で列挙したい)。
IReadOnlyList
私はそれが秩序を保つことを知っています。使用できますが、インデックス作成は必要ありません。これは、 を使用する必要があることを意味しますIReadOnlyCollection
。残念ながら、秩序を保っているという情報は見つかりませんでした。
そうかどうか知っていますか?
データ構造の要件は 2 つだけです。
IReadOnlyList
私はそれが秩序を保つことを知っています。使用できますが、インデックス作成は必要ありません。これは、 を使用する必要があることを意味しますIReadOnlyCollection
。残念ながら、秩序を保っているという情報は見つかりませんでした。
そうかどうか知っていますか?
読み取り専用リストを作成するには、さまざまなアプローチに従うことができます。
List<string> list = new List<string>();
IReadOnlyList<string> roList = list;
var roList1 = new ReadOnlyList(list);
roList
とroList1
はどちらも読み取り専用ですが、元の型がわかっている場合は、roList
それList<string>
をキャストしてコレクションを変更できます。したがって、2 番目のオプションの方が優れています。指摘するIEnumerable<string>
ために、コレクションを変更するメソッドを提供しないため (元の型にキャストしない場合)、 a も読み取り専用です。
List<T>
2 番目の質問では、anyは順序を保持すると言えます。リストを照会して使用する方法を提供したくない場合は、OrderBy
から派生したクラスを使用してこれを行うことはできませんIEnumerable
。これは、拡張メソッドによるものです。それにもかかわらず、リスト インスタンスの順序は保持されますが、再クエリを実行できます。これは、元のリストが変更または修正されたことを意味するものではありません。