2010-04-28 73 views
3

在C#中,可以執行以下操作:C#海量插入數據結構

List<int> registers = new List<int> { 1, 2, 3, 4 }; 

這將在列表中產生具有1,2,3和4的列表。假設我從一些函數給出一個列表,我想插入一串數字像下面這樣:

List<int> register = somewhere(); 
register.Add(1); 
register.Add(2); 
register.Add(3); 
register.Add(4); 

是否有這樣做像上面的代碼片段的更清潔的方式?

+2

我很失望,我期望的東西*巨大*':P' – Kobi 2010-04-28 06:38:16

+0

是的,如果你使用集合初始值設定項對真正大規模的插入進行硬編碼,那就是TDWTF材質。 – 2010-04-28 06:40:37

回答

4

假設新項目都以某種形式枚舉已中,AddRange()方法允許你添加他們都一氣呵成:

var toBeAdded = new int[] { 1,2,3,4 }; 
register.AddRange(toBeAdded); 
+0

+1擊敗了我。 – ChrisBD 2010-04-28 06:32:04

2

你的意思是這樣的嗎?

List<int> register = somewhere(); 
register.AddRange(new List<int> { 1, 2, 3, 4 }); 
+1

請注意,儘管您的示例在語法上更清晰,但它不會提供任何性能優勢,因爲集合初始化程序仍然會逐個添加項目。 – 2010-04-28 06:25:10

+1

要添加到DrJokepu的評論:具體問題是,當調用Add多次(什麼集合初始化是語法糖)將不斷調整內部數組不止一次,如果你碰巧有足夠的元素(可能30+),AddRange *即使在這些情況下,可能*只執行一次調整。如果您使用數組初始值設定項,則不會有任何大小調整。 – 2010-04-28 06:36:30

0

我認爲你可以得到最乾淨的是這樣的:

List<int> register = somewhere(); 
register.AddRange(new[] { 1, 2, 3, 4 }); 

但是,它可能並不總是能夠隱式類型的數組。