【发布时间】:2011-09-12 04:04:43
【问题描述】:
我遇到了一种方法来更改 foreach 循环中的列表,方法是像这样转换为本身的列表:
foreach (var item in myList.ToList())
{
//add or remove items from myList
}
(如果您尝试直接修改myList,则会引发错误,因为枚举器基本上锁定了它)
这是有效的,因为它不是被修改的原始myList。我的问题是,当循环结束时,此方法是否会创建garbage(即从ToList 方法返回的List?对于小循环,最好使用for loop 来避免创建垃圾?
【问题讨论】:
-
推理不是倒退吗,至少给出注释“//从myList中添加或删除项目”?它不应该读成(长):“这行得通,因为它不是
myList迭代(而是使用ToList()创建的副本),所以myList可以在foreach 循环。”
标签: c# list garbage-collection foreach memory-management