gpt4 book ai didi

c# - IsDirty 比较的集合快照

转载 作者:太空宇宙 更新时间:2023-11-03 18:46:53 24 4
gpt4 key购买 nike

什么是存储集合快照以供后续 IsDirty 检查的好方法(快速、高效等)?

干杯,
贝瑞尔

最佳答案

如果您只想保存快照并检查列表的大小是否发生变化(添加/删除项目)

var snapshot = new List<Foo>(list);

但是,如果您要更改列出的项目并想检查项目是否已更改,则必须克隆每个项目。如果您只是将它们填充到另一个列表中,引用应该保持不变。

var snapshot = list.Select(item => new Foo 
{
Property1 = item.Property1,
... ,
PropertyN = item.PropertyN
});

如果您只想查看列表的计数是否发生变化,您可以使用第一个版本。

也许你的对象上有一个标识符,它简化了类似这样的解决方案

var snapshot = list.Select(item => item.Id);

ID列表可以用来查看内容是否发生了变化。如果您的对象的内存使用量也很大,则此模式会有所帮助。

但是您可以使用 ObservableCollection<T>其中有通知您更改的事件。这样您就可以跟踪对集合的所有更改(添加/删除/替换)。

关于c# - IsDirty 比较的集合快照,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3569568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com