Когда я читаю этот пример, я вспоминаю, что вы можете использовать C5 TreeSet
/ TreeBag
.Требуется, чтобы был способ заказать ваши вещи, но преимущество коллекций Tree
состоит в том, что они предлагают метод Snapshot
(член C5.IPersistentSorted
), который позволяет вам делать легкие снимкисостояние коллекции без необходимости делать полную копию.
например:
using(var copy = mySet.Snapshot()) {
foreach(var item in copy) {
item.DoSomething();
}
}
C5 также предлагает простой способ «применить ко всем» и совместимс .NET 2.0:
using(var copy = mySet.Snapshot()) {
copy.Apply(i => i.DoSomething());
}
Важно отметить, что снимок должен быть удален, или вы будете подвергнуты небольшому снижению производительности при последующих модификациях базовой коллекции.
Этот пример изочень тщательная C5 книга .