克隆无法实现ICloneable的引用类型列表

时间:2010-09-24 10:33:32

标签: .net list collections clone

是否有更简单/更整洁的方法来深度克隆未实现ICloneable的引用类型列表。

目前已循环遍历列表中的每个对象,如下所示:

    Dim myListCopy As New List(Of ListObj)
    For Each lo As ListObj In MyList
        myListCopy.Add(lo.ShallowCopy)
    Next

对象ListObj仅包含值类型,并以成员方式返回浅层。

但这可以解决这个问题:How do I clone a generic list in C#?

我真的不明白在扩展中发生了什么,是否可以将shollowCopy函数扩展并避免迭代?

1 个答案:

答案 0 :(得分:0)

如果您编写扩展方法,它仍然必须以某种方式迭代您的列表。对于VB.net,扩展方法看起来像......

<Extension()> _
Public Function Clone(MyList as List(Of ListObj)) as List(Of ListObj)
    Dim myListCopy As New List(Of ListObj) 
    For Each lo As ListObj In MyList 
        myListCopy.Add(lo.ShallowCopy) 
    Next 
    Clone = myListCopy
End Function

然后,当您需要浅层复制ListObj项目列表时,您会...

Dim aList As New List(Of ListObj)
''' add stuff here
Dim anotherList As List(Of ListObj)
anotherList = aList.Clone()