1. ホーム
  2. .net

[解決済み] List<T>はアイテムが追加された順番に返されることを保証しますか?

2023-05-08 02:59:34

質問

を使用することはできますか? List<T> は常に、列挙されたときに追加された順序で項目が返されることを保証しますか?

更新 : みなさん、回答ありがとうございました!これで安心です。私はざっと調べてみたところ List<T> クラスを.NET Reflectorでざっと調べてみましたが(最初の段階でそうすべきだったかもしれません)、実際、基礎となるストアは T ( T[] ).

どのように解決するのですか?

リストはインデックスベースで、新しい項目は常にリストの末尾に追加されます。あるインデックスでアイテムを挿入すると、次のアイテムが1つ移動します。

そのため はい を使用することができます。 安全に そのように

List(T)クラスは、ArrayListクラスの総称です。 ArrayListクラスと同等です。これは IList(T) ジェネリックインターフェースを実装しています。 インターフェイスを実装しています。 を実装しています。

このコレクション内の要素は 整数のインデックスを使用してアクセスすることができます。 このコレクションのインデックスは ゼロベースです。

List(T)はソートされていることを保証するものではありません。 ソートされています。リスト(T)をソートする必要があります。 を必要とする操作 (たとえば バイナリサーチのような) 操作を行う前にソートしておく必要があります。 をソートする必要があります。

List(T)は、複数の読者を同時にサポートすることができます。 を同時にサポートすることができます。 コレクションが変更されない限り、複数の読者を同時にサポートすることができます。 コレクションを列挙することは 本質的にスレッドセーフではありません。 手続きではありません。稀なケースとして 列挙が1つまたは複数の 書き込みアクセスに遭遇した場合、スレッドセーフを確保する唯一の方法 スレッドセーフを確保する唯一の方法は、コレクションを コレクションをロックすることです。 である。コレクションを許可するには を複数のスレッドからアクセスできるようにするには 読み書きのために複数のスレッドからアクセスできるようにするには 独自の同期を実装する必要があります。

で詳細を読むことができます。 MSDN .