2012-11-04 25 views
0

我通常不會在Windows上開發,但最近我不得不在C#上做一些工作,我正在努力解決一些問題。我一直在尋找通過MSDN,但不能找到我在找什麼。C#〜關於List的一些問題<>

無論如何,據我所知,它是一個列表索引,非常像一個數組。但是,如果我使用RemoveAt()刪除位置X處的一個項目,那麼它會移動所有項目,以便新項目現在填充位置X?或者位置X只是空的?

如果您有一個字符串或整數列表,並且使用Remove()看起來相當簡單,但如果您有一個對象列表,可以使用Remove()刪除一個對象字段具有特定值?

例如

說我有List,每個汽車對象都有一個品牌,型號&顏色。

我能做到沿

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

線的東西我敢肯定,這是可怕的錯誤,但我來自一個PHP背景的這樣的IM相當困惑此刻的語法很多。

感謝

+0

謝謝,正是我在尋找的那種答案。 – cosmicsafari

回答

5

List<T>不會得到孔。
刪除一個項目會將所有後續項目向上移動一個。

你可以通過調用RemoveAll()用lambda表達式刪除匹配條件的所有項目:

list.RemoveAll(o => o.Color == "Red"); 
3

,如果我使用RemoveAt移除(刪除了一個項目,在位置X)將它再 轉移的所有項目這樣一個新的項目現在填補了位置X?

是的。

如果您有一個對象列表是否可以使用Remove()刪除 一個項目,其中一個對象字段有一個特定的值?

是,使用該方法RemoveAll

cars.RemoveAll(c => c.color == "red"); 
0

項目被除去斑點是採取了由下一個。由於清單是集合,你可以使用lambda與刪除所有

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

將刪除所有重新汽車。