复制T列表

时间:2012-11-29 11:44:34

标签: vb.net list visual-studio-2012 copy addrange

我正在使用VS2012,vb.net。

如果我有一个类型为t的列表,并且我希望将其复制到另一个列表,则以下代码有效:

list2.Clear()
list2.AddRange(list1)

但是,如果t的第一个列表中有另一个类型为t2的列表,则上面的代码不起作用。

我可以请一些帮助将t列表的内容复制到另一个列表中,其中t列表中有另一个t2列表。

由于

1 个答案:

答案 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复制外部列表。请注意,如果内部列表中有引用类型对象而不是整数,则还需要克隆每个单独的对象以执行深层复制。