对于一个undo-redo系统我需要调用一个函数,每当列表以某种方式改变时对列表进行深度复制(在索引处添加,删除,插入,修改元素)。
我考虑过将列表设为私有并为每个操作编写方法。然而,这增加了许多庞大的代码。此外,它不是很实用,看起来不太好,例如list[i] = 10
成为modify(list, i, 10)
。修改方法如下所示:
public void Modify(List<int> list, int index, int value) {
Logger.DeepCopy(list);
list[i] = value;
}
有没有办法保持列表的方法不变?