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