文字列Dad、mam、Junior、Richardのリストがあります。たとえば、インデックスが2の Junior をリストから削除します。リチャードの指数は 2 になるのか、それとも 2 位に差をつけて 3 のままなのか。
助けてくれてありがとう
文字列Dad、mam、Junior、Richardのリストがあります。たとえば、インデックスが2の Junior をリストから削除します。リチャードの指数は 2 になるのか、それとも 2 位に差をつけて 3 のままなのか。
助けてくれてありがとう
たとえば、インデックスが2のJuniorをリストから削除するとします。リチャードのインデックスは2になりますか、それとも2番目の位置にギャップがある3のままですか?
2になります。隙間はありません。また、要素を追加すると、この要素がリストの最後に追加されます。
ちなみに、おいおい、これを確認するのはとても難しいですか?コンパイラなどにアクセスできないということですか?
using System;
using System.Linq;
public class Program
{
static void Main()
{
var list = new[] { "Dad", "mam", "Junior", "Richard" }.ToList();
list.RemoveAt(2);
Console.WriteLine(list[2]);
}
}
プリント:
Richard
ギャップなし。ギャップが必要な場合は、その位置の値をnull
自分で置き換えます。
ほとんどの場合、隙間ができたくないので、きれいに保たれていることに満足できます。
ただし、実際的な結果の 1 つは、同じ操作で多くの項目を削除する場合、削除しないものだけを含む新しいリストを作成する方が高速であることに気付く場合があります (各操作の後に内部的に物事を移動するため)。削除する)。
ただし、それが価値があるためには、多くのことが必要です。最初にそのアプローチに飛びつくのではなく、大きな遅延に遭遇した場合は覚えておいてください。
ギャップはありません。編集済みリストには3つのアイテムしか含まれておらず、インデックスは、、0
です。1
2
Removeメソッドを使用すると、はい、Richardのインデックスは2になります。削除した要素は文字通りリストから削除されるため、インデックスが更新されます。
Addメソッドを使用すると、アイテムがリストの最後に追加されるため、他のすべての要素のインデックスは変更されません。
リストのインデックスは常にリスト内のアイテムの位置です。ギャップはあり得ますし、決してありません。さらに、Count
は常にリスト内のアイテムの数を返し、アイテムのインデックスは常に0から。になりますCount-1
。