【发布时间】:2016-05-04 07:38:40
【问题描述】:
如我们所见,代码抛出错误是有原因的。
Error:{"Collection was modified; enumeration operation may not execute."}
但是必须有一种方法可以做到这一点,使用 foreach(而不是 for),使用 List。请不要告诉我Deep Copy之类的制作方法
var cloneList = NumberList.ToList()
并从中删除项目。因为如果我们有 100 万个元素,我们将使其成为 200 万个用于删除等。我不需要这个。
代码sn-p在这里;
public class HomeController : Controller
{
// GET: Home
public ActionResult Index()
{
var numberList = new List<int>();
numberList.AddRange(new List<int>() { 1, 2, 3, 4, 5, 6, 7, 8, 9 });
var totalNumber = 0;
foreach (var item in numberList)
{
totalNumber += item;
if (item == 5)
{
numberList.Remove(item);
}
}
return View(totalNumber);
}
}
请帮我了解一下这个烧脑代码 sn-p..
谢谢。
更新:问题不在于在最后一点获得列表元素的Sum()。问题的核心是,如何在 foreach 循环时从列表中删除项目。
【问题讨论】:
-
使用
for循环从最后一个循环到第一个 -
我怀疑它是否允许您在迭代使用每个循环时删除项目。使用其他循环技术。
-
你试过可以回答吗?
-
@StephenMuecke no for,没有回头路。我们必须在 foreach 循环并显示结果时这样做。
-
这根本不可能。
标签: c# asp.net-mvc list foreach