2017-01-02 14 views
1

私はリストの先頭にfoo.Insert(0, bar);を使ってアイテムを挿入しようとしていますが、インデックス0にあったアイテムがインデックス1に移動するのではなく、リストの後ろにぶつかっているようです。新しいリストを作成し、値を順番に追加しますが、それは乱雑/ハッキリに見えます。リスト内のアイテムを後ろに突き当てることなくリスト<T>にアイテムを挿入するにはどうすればよいですか?

これを行うための明確な方法はありますか?もしそうなら、どうですか?

ありがとうございます。

+4

あなたが何か間違ったことをやっている、あなたは順序を気にした場合previuos 0項目はインデックス1 –

+1

を取得する必要がありますように、ちょうど後ろの位置に挿入するすべての項目をシフト挿入おそらく['Stack'](https://msdn.microsoft.com/en-us/library/system.collections.stack(v = vs.110).aspx)を使うべきです。 –

+1

[最小限で完全であり、検証可能な例](http://stackoverflow.com/help/mcve)を提供できますか?私はそれを再現することはできません。インデックス0に挿入すると、他のすべての要素が単純に上に移動します。リストの最後には何も移動しません。 –

答えて

3

すでにコメントの中で述べたように、List<T>の順序を保存すると、記述された動作は起こらないはずです。

簡単な例:

var lst = new List<int> {1,2,3,4}; 
lst.Insert(0,0); 
lst.Dump(); 

enter image description here

+1

ソースコードで保証されています。https://referencesource.microsoft.com/#mscorlib/system/collections/generic/list.cs,49c519bce0cdbd82 line 677 –

関連する問題