2009-01-05 63 views
2
int[] mylist = { 2, 4, 5 }; 
IEnumerable<int> list1 = mylist; 
list1.ToList().Add(1); 
// why 1 does not get addedto list1?? 

回答

18

爲什麼會這樣? ToList()生成一個新的List,並將值'1'添加到它。由於您不存儲回報,新列表在超出範圍時會被拋出。 ToList()不改變原始的IEnumerable對象list1或給出一個新的表示(如果是的話,它將被稱爲AsList())。

+0

IEnumerable的 newList = list1.ToList()添加(1); //你想要的代碼 – jrcs3 2009-01-05 03:05:51

+0

這就像使用String.Replace()時常犯的第一個計時器錯誤。 – Kev 2009-01-05 04:08:11

1

你需要:

int[] mylist = { 2, 4, 5 }; 
IEnumerable<int> list1 = mylist; 
List<int> lst = list1.ToList(); 
lst.Add(1); 
mylist = lst.ToArray();