如何检测集合在迭代过程中是否被修改

时间:2019-04-05 13:33:14

标签: c# collections iteration

当遍历字典或列表或其他集合时,我可以以某种方式检查集合是否被修改了吗?

foreach (var pair in dictionary) {
   DoStuff(pair);
   if (DictionaryWasModified())
      break;
}

如果将DoStuff添加到字典中或从字典中删除,则在下一个迭代步骤中将引发异常。我想避免例外。

1 个答案:

答案 0 :(得分:0)

字典及其迭代器将有关集合自上次迭代以来是否已更改的信息保密,因此您无法访问它。如果您希望能够在变体时安全地遍历一个集合,或者想知道自开始迭代以来它何时发生了变化,则需要创建自己的集合(大概包装一个现有的集合),其中您可以跟踪自己是否已更改,并公开暴露该信息。