lak*_*tak 0 c# .net-4.0 asp.net-4.5
有时在列表更改时枚举列表很有用.
例如
foreach (var item in listOfEntities)
item.Update();
// somewhere else (with someEntity contained in listOfEntities)
// an add or remove is made:
someEntity.OnUpdate += (s,e) => listOfEntities.Remove(someEntity);
Run Code Online (Sandbox Code Playgroud)
如果listOfEntities是a,这将失败List<T>.
有一些解决方法,比如制作副本或简单的for循环,每个都有不同的缺点,但我想知道框架(或开源)中是否有支持这种情况的列表类型.
查看System.Collections.Concurrent中的集合.那里没有列表,但集合的枚举器"代表[集合]内容的时刻快照".
这些集合专为从多个线程访问而设计,因此它们更适合于您发布的代码示例等应用程序.