是否有更简单/更整洁的方法来深度克隆未实现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函数扩展并避免迭代?
答案 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()