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

标签 c# collections iteration

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

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

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

最佳答案

字典及其迭代器将有关集合自上次迭代以来是否已更改的信息保密,因此您无法访问它。如果您希望能够在集合发生变化时安全地对其进行迭代,或者能够知道自从开始迭代以来它何时发生了变化,您需要制作自己的集合(可能是包装现有集合),其中您自己跟踪它是否已更改,并公开该信息。

关于c# - 如何检测集合在迭代过程中是否被修改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55536596/

相关文章:

使用 for 循环进行 Javascript 对象迭代

java - 从 ArrayList 获取坐标(x,y)的快速方法?

c# - CodePlex 和 CodeProject 的 QuickGraph 之间的区别

c# - IOC 和动态参数

java - Java 9:什么是集合工厂方法?

recursion - 每个递归过程都可以转化为迭代过程吗?

c# - 我如何在表单上从 iOS 和 Android 打开 UIViewController

c# - .NET Core 2.0 Web API 用于 FileStream 的视频流

c# - 从 IEnumerable<DateTime> 获取最早的日期

java - 如何使用 Java 反射来检查给定类是否实现了 Iterable<? extends T>,对于任何给定的 T