我发现了一种通过将列表转换为自身来更改foreach
循环中的列表的方法,如下所示:
foreach (var item in myList.ToList())
{
//add or remove items from myList
}
如果你试图直接修改
myList
,会抛出错误,因为枚举器基本上会将其锁定。这个方法之所以能行,是因为它并没有修改原始的
myList
。我的问题是,当循环结束时,这种方法是否会创建garbage
(即从ToList
方法返回的List
)? 对于小循环来说,使用for loop
来避免创建垃圾是否更可取?
myList
被迭代(而是使用ToList()
创建的副本),所以可以在foreach循环中修改myList
。” - Christian.K