我有一个 WPF 表单,它采用具有位置和大小的对象列表并将它们绘制在画布上。我目前正在尝试实现一个撤消按钮,该按钮将丢弃对对象位置所做的所有更改,并恢复为加载表单时检索到的原始集合。
就目前而言,我在加载表单时访问数据库并获取所有需要显示的对象,然后将返回的列表分配给两个单独的集合。出现的问题是这两个集合实际上是指向原始集合的指针,并且每当更改一个集合时,更改都会反映在第二个集合中。
是否可以复制对象列表,以便对一个集合所做的更改不会影响辅助集合?
到目前为止,我已经尝试简单地使用赋值运算符,将源集合传递给一个函数byval
并滚动列表的每个元素,手动将其添加到第二个集合中,并使用 linq 从原始列表中获取所有对象并推送结果到一个单独的临时列表并将第二个集合分配给临时列表。
我觉得我把这个问题复杂化了,但我在谷歌搜索时遇到的几乎所有地方都说这种行为是设计使然,我理解,但这似乎是一个相当普遍的想法。