我使用c#win应用程序。 我想复制我的清单,不是为了报价,而是为了价值。 我的第一个列表仍然是原始的,如果我在新列表中进行更改,此更改不会出现在原始列表中。 我已经尝试过这段代码,但是没有把它复制到引用而不是重视
_TracList = GetMyData();
List<FileVers> wTemp = new List<FileVers>(_TracList);
我会修改wTemp并将_TracList与原始值一起使用; 如何按照我的清单价值制作副本?
答案 0 :(得分:0)
您的代码 创建了一个值副本:如果您从wTemp
中删除某个元素,它仍然可以在_TracList
中使用。
但是,您的代码不制作每个元素的值副本,因此如果您修改 wTemp
中的条目,它也将在_TracList
中修改。 C#无法制作深层副本,因为它不知道如何制作自定义FileVers
类的值副本。
如果您想要每个元素的副本,您必须手动创建它:
var wTemp = _TracList.Select(x => MakeCopyOf(x)).ToList();
MakeCopyOf
是您必须提供的方法,它会获取FileVers
个实例并返回它的副本。