根据标题 - C#/.NET 中是否有很好的内置选项可用于 IList 或 IDictionary 上的故障安全迭代?
我遇到问题的地方是类似于以下的代码:
IList<Foo> someList = new List<Foo>();
//...
foreach (Foo foo in someList) {
if (foo.Bar) {
someList.remove(foo);
}
}
在第一次 foo.Bar 为真后抛出以下内容:
Type: System.InvalidOperationException
Message: Collection was modified; enumeration operation may not execute.
我知道简单的解决方法是这样做foreach (Foo foo in new List<Foo>(someList))
,但是必须记住每次都这样做很烦人。单身的。时间。这出现了。
来自 Java 背景,这可以用 CopyOnWriteArrayList/ConcurrentHashMap 巧妙地处理(我知道使用这些列表还有其他惩罚。)C# 中是否有我不知道的等价物?