2009-01-05 42 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();