2014-12-29 37 views
0

我使用的是C#win應用程序。 我想做一份我的清單的副本,不是爲了參考,而是根據價值。 我想我的第一個列表始終保持原始狀態,如果我在新列表中進行更改,則此更改不會顯示在原始列表中。 我曾嘗試這個代碼,但不wotk怎麼一回事,因爲副本參考,不重視如何按值創建新副本列表

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

我將修改wTemp並採取_TracList與原始值; 我如何通過我的列表的值來製作副本?

回答

0

您的代碼確實創建值複製:如果您從wTemp中刪除元素,它仍將在_TracList中可用。

然而,你的代碼使每個元素的值複製,因此,如果您修改的條目wTemp,它也將在_TracList修改。 C#不能進行深層複製,因爲它不知道如何製作自定義FileVers類的值副本。

如果你想每個元素的副本,你將不得不手動創建它:

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

MakeCopyOf是,你必須提供一個方法,它需要一個FileVers實例,並返回它的一個副本。