2010-12-16 50 views
7

我在我的代碼方式來填補的List <>與元素

List<BookedReelsState> retVal = new List<BookedReelsState>(somesize); 

比賽在後面的代碼,如果某些條件的作品,我需要填補相同的值這個整個列表。

當然,我可以通過foreach循環和設置值,是否有更優雅的方式來做到這一點? 我只是在這裏學習新東西。

+0

'AddRange'可能? – leppie 2010-12-16 08:13:24

回答

18
retVal.AddRange(Enumerable.Repeat(value, somesize)); 
0

如果你有一個IEnumerable,那麼你可以使用List.AddRange

例子:這裏

var list = new List<BookedReelsState>(20); 

var someEnumerable = new [] 
{ 
    new BookedReelsState(1), 
    new BookedReelsState(2), 
    new BookedReelsState(2) 
}; 

list.AddRange(someEnumerable); 
2

兩件事情。

首先List<T>(int capacity)不會在其中創建一個包含capacity項的列表。它只是爲他們保留記憶。因此,在該示例清單上面會有它的長度等於0

但是,如果你有一個列表,並要設置它的每一個元素,你可以做這樣的:

retVal.ForEach(rv => rv = desiredValue); 

凡desiredValue是您想要爲每個元素設置的值。

我也覺得很奇怪,你想填充列表中的每個元素具有相同的值。如果所有元素都是相同的,那麼這個列表沒有任何用處,但我想你可能需要預先填充一些默認值,然後再改變其中的一些。

5
retVal.ForEach(b => b.changedProp = newValue);