我有一個MyItems列表。 MyItem可能會或可能不會引用其同伴。c#克隆交叉引用列表
List<MyItem> myList = new List<MyItem>();
myList.add(...) //add all 8 items
myList[1].RefTo = myList[3];
myList[5].RefTo = myList[2];
myList[7].RefTo = myList[5];
Item 0
Item 1 ----+
+---> Item 2 |
| Item 3 <---+
| Item 4
+--- Item 5 <---+
Item 6 |
Item 7 ----+
我需要做一個整個列表的克隆。新列表中的每個MyItem都是舊列表中的MyItems的新副本(不是引用),並且新列表中的所有引用都應該指向新列表中的項目。在那時,即使舊列表和舊MyItems被完全刪除,新列表也可以工作。
我已經在MyItem中實現了ICloneable接口,因此可以通過調用MyItem.Clone()來克隆該項目。但是,克隆副本仍然引用舊列表中的MyItems。
如何使用新列表中的對象更新MyItems的引用? 示例代碼將不勝感激。
我幾乎想知道如果你將需要克隆的名單被保留,而不是列表中的項目...... – Daryl