Bra*_*don 2 c# .net-3.5 .net-2.0 winforms
我知道为什么会发生这种情况,但有没有办法在不必实现ICloneable或Copy()方法的情况下做到这一点?优选.net 2.0,但如果有必要,则3.5可以.
基本上我正在尝试实现撤消方法.在大多数情况下,我可以只执行相反的操作Undo()
,但对于其他不可能的操作.
所以我想保留两个清单.一个用于我将要修改的项目列表,另一个用于原始未修改的项目列表.这样,如果我需要进行撤消,我只需删除已修改的项目并将其替换为原始项目.我试图分配_originalItems变量的大多数方法都不起作用,那么我需要做什么呢?
public MyClass(List<SelectedItems> selectedItems)
{
_selectedItems = new List<SelectedItems>(selectedItems);
_originalItems = ??
}
Run Code Online (Sandbox Code Playgroud)
你可以简单地写new List<SelectedItems>(selectedItems)
第二次.
这将创建一个引用相同实例的单独列表.
两个列表中都会看到对象的更改(因为它们是相同的实例); 对列表(例如Add()
)的更改不会.
如果要复制实例,则需要一个Copy()
方法; .Net无法神奇地深层复制任意类型.
创建Copy
方法后,您可以编写
_originalItems = selectedItems.ConvertAll(o => o.Copy());
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
200 次 |
最近记录: |