如何按值创建新的副本列表

时间:2014-12-29 14:26:50

标签: c# deep-copy

我使用c#win应用程序。 我想复制我的清单,不是为了报价,而是为了价值。 我的第一个列表仍然是原始的,如果我在新列表中进行更改,此更改不会出现在原始列表中。 我已经尝试过这段代码,但是没有把它复制到引用而不是重视

_TracList = GetMyData();
List<FileVers> wTemp = new List<FileVers>(_TracList);

我会修改wTemp并将_TracList与原始值一起使用; 如何按照我的清单价值制作副本?

1 个答案:

答案 0 :(得分:0)

您的代码 创建了一个值副本:如果您从wTemp中删除某个元素,它仍然可以在_TracList中使用。

但是,您的代码制作每个元素的值副本,因此如果您修改 wTemp中的条目,它也将在_TracList中修改。 C#无法制作深层副本,因为它不知道如何制作自定义FileVers类的值副本。

如果您想要每个元素的副本,您必须手动创建它:

var wTemp = _TracList.Select(x => MakeCopyOf(x)).ToList();

MakeCopyOf是您必须提供的方法,它会获取FileVers个实例并返回它的副本。