Клонировать список ссылочных типов, которые НЕ МОГУТ реализовать ICloneable - PullRequest
0 голосов
/ 24 сентября 2010

Существует ли более простой / удобный способ глубокого клонирования списка ссылочных типов, которые не реализуют ICloneable.

В настоящее время выполняется цикл по каждому объекту в списке, например:

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

Объект ListObj содержит только типы значений и возвращает поверхностный член.

Это работает, однако я просматриваю этот пост здесь: Как мне клонировать общий список в C #?

Я не очень понимаю, что происходит в расширении, возможно ли использовать функцию shollowCopy для расширения и избежать итерации?

1 Ответ

0 голосов
/ 24 сентября 2010

Если вы напишите метод расширения, ему все равно придется перебирать ваш список тем или иным способом. Для 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()
...