5

データ構造の要件は 2 つだけです。

  • 読み取り専用にする
  • 順序を保持します(常に特定の順序で列挙したい)。

IReadOnlyList私はそれが秩序を保つことを知っています。使用できますが、インデックス作成は必要ありません。これは、 を使用する必要があることを意味しますIReadOnlyCollection。残念ながら、秩序を保っているという情報は見つかりませんでした。

そうかどうか知っていますか?

4

1 に答える 1

1

読み取り専用リストを作成するには、さまざまなアプローチに従うことができます。

List<string> list = new List<string>();
IReadOnlyList<string> roList = list;
var roList1 = new ReadOnlyList(list);

roListroList1はどちらも読み取り専用ですが、元の型がわかっている場合は、roListそれList<string>をキャストしてコレクションを変更できます。したがって、2 番目のオプションの方が優れています。指摘するIEnumerable<string>ために、コレクションを変更するメソッドを提供しないため (元の型にキャストしない場合)、 a も読み取り専用です。

List<T>2 番目の質問では、anyは順序を保持すると言えます。リストを照会して使用する方法を提供したくない場合は、OrderByから派生したクラスを使用してこれを行うことはできませんIEnumerable。これは、拡張メソッドによるものです。それにもかかわらず、リスト インスタンスの順序は保持されますが、再クエリを実行できます。これは、元のリストが変更または修正されたことを意味するものではありません。

于 2016-04-28T19:37:34.220 に答える