我正在使用VS2012,vb.net。
如果我有一个类型为t的列表,并且我希望将其复制到另一个列表,则以下代码有效:
list2.Clear()
list2.AddRange(list1)
但是,如果t的第一个列表中有另一个类型为t2的列表,则上面的代码不起作用。
我可以请一些帮助将t列表的内容复制到另一个列表中,其中t列表中有另一个t2列表。
由于
答案 0 :(得分:1)
However, if the first list of t has another list of type t2 inside it, this above code does not work.
它 工作,但确实a shallow copy, not a deep copy。
假设您要对List(Of List(Of Integer))
进行深层复制。你可以这样做:
Dim list1 As List(Of List(Of Integer))
*Populate list 1*
Dim copy = list1.Select(Function(innerList) innerList.ToList).ToList
现在您必须使用独立列表,因为您使用ToList
复制每个内部列表,并使用ToList
复制外部列表。请注意,如果内部列表中有引用类型对象而不是整数,则还需要克隆每个单独的对象以执行深层复制。