1. ホーム
  2. c#

[解決済み】List<T>は挿入順序を保証するか?

2022-04-03 05:25:46

質問

Listに3つの文字列があるとします(例: "1","2","3" )。

そして、"2"を1の位置に置くように並べ替えたい(例: "2","1","3" )。

私はこのコードを使っています(indexToMoveToを1に設定)。

listInstance.Remove(itemToMove);
listInstance.Insert(indexToMoveTo, itemToMove);

これはうまくいっているように見えますが、時々おかしな結果が出ます。順番が正しくないとか、リストの項目が削除されてしまうのです

何かアイデアはありますか?は List<T> 注文を保証しますか?

関連する

List<T> は、項目が追加された順に返されることを保証しますか?

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

その List<> クラスは順序を保証するものではありません。リストは、明示的にソートしない限り、重複を含めて追加した順番に保持されます。

MSDNによると。

<ブロッククオート

...リスト "強く型付けされたオブジェクトのリストを表し、次のことが可能です。 アクセス インデックス ."

そのためにはインデックス値の信頼性が保たれている必要があります。したがって、順序は保証されます。

リスト内の項目を後で移動させる場合、あなたのコードから奇妙な結果が得られるかもしれません。 Remove() を呼び出す前に、他のすべての項目がひとつ下に移動してしまいます。 Insert() .

あなたのコードを投稿できるほど小さく煮詰めることができますか?