foreach如何知道迭代集合被修改了?

时间:2010-10-04 06:17:53

标签: c# foreach

当我修改集合时,我正在使用foreach进行迭代,我得到了一个例外。所以我只是好奇foreach(或运行时)如何检测到它。是否可以使用一般对象?

1 个答案:

答案 0 :(得分:15)

集合本身必须检测它。在标准库集合中,这是通过具有由每个操作修改的内部版本号来实现的,并且在每次迭代时由迭代器检查(即每次调用MoveNext时它检查版本号是否相同就像创建迭代器时一样。)