0

私は通常Windowsで開発することはありませんが、最近C#で少し作業をしなければならず、いくつかのことに頭を悩ませようとしています。私はMSDNを調べてきましたが、探しているものがまったく見つかりません。

とにかく、私が理解しているように、リストは配列のようにインデックスが付けられています。ただし、RemoveAt()を使用して位置Xのアイテムを削除した場合、新しいアイテムが位置Xを埋めるように、すべてのアイテムをシフトしますか?それとも、位置Xは空になりますか?

また、文字列または整数のリストがある場合、Remove()の使用はかなり簡単に思えますが、オブジェクトのリストがある場合、Remove()を使用して、オブジェクトフィールドが特定の値を持つアイテムを削除することは可能ですか?

例えば

各車のオブジェクトにメーカー、モデル、色が記載されたリストがあるとします。

私はの線に沿って何かをすることができますか

 cars.Remove(cars.color="red");

私はそれがひどく間違っていると確信していますが、私はPHPのバックグラウンドから来ているので、現時点では多くの構文についてかなり混乱しています。

ありがとう

4

3 に答える 3

5

List<T>穴はありません。
アイテムを削除すると、後続のすべてのアイテムが1つ上にシフトします。

RemoveAll()ラムダ式を使用して呼び出すことにより、条件に一致するすべてのアイテムを削除できます。

list.RemoveAll(o => o.Color == "Red");
于 2012-11-04T22:29:02.767 に答える
3

RemoveAt()を使用して位置Xのアイテムを削除した場合、新しいアイテムが位置Xを埋めるように、すべてのアイテムをシフトしますか?

はい。

オブジェクトのリストがある場合、Remove()を使用して、オブジェクトフィールドに特定の値があるアイテムを削除することはできますか?

はい、次のRemoveAll方法を使用します。

cars.RemoveAll(c => c.color == "red");
于 2012-11-04T22:29:43.327 に答える
0

アイテムが削除されると、その場所は次のアイテムによって占められます。リストはコレクションであるため、ラムダを使用してすべてを削除できます

Cars.RemoveAll( x=> x.colour == "red"); 

すべての再車を削除します。

于 2012-11-04T22:32:28.620 に答える