2016-11-25 3 views
-1

Ich habe ein WörterbuchWie kann ein Wörterbuch oder ein Listenfeld wirklich dupliziert werden?

Dim List4x As Dictionary(Of Byte, List(Of Byte)) = DuplicateDic(ByteList4) 

Public Shared Function DuplicateDic(ByVal List As Dictionary(Of Byte, List(Of Byte))) As Dictionary(Of Byte, List(Of Byte)) 
    Dim kv As New Dictionary(Of Byte, List(Of Byte)) 
    For Each itm As KeyValuePair(Of Byte, List(Of Byte)) In List 
     kv.Add(itm.Key, itm.Value) 
    Next 
    Return kv 
End Function 

Wenn ich in der alten Liste meiner neuen Liste Clearing eins nach dem anderen Elemente zu entfernen ..

Wie ein Wörterbuch oder eine Liste Array realen duplizieren?

Dank

+1

Eine 'List (Of T)' ist ein Referenztyp (eine Klasse). Sie müssen eine komplett neue Liste für das neue Wörterbuch erstellen. Sie können jede Liste entweder wie mit Ihrem Wörterbuch wiederholen oder Sie können eine [** deep copy **] erstellen (http://stackoverflow.com/a/37085471/3740093). –

Antwort

2

Sie eine neue Liste benötigen, andernfalls sind beide Listen gleichen und wenn Sie es aus der Liste entfernen 2 Sie werden es auch aus der Liste 1 entfernen, weil List(Of T) eine Art Referenz. Sie können this list constructor verwenden:

Public Shared Function DublicateList(ByVal List As Dictionary(Of Byte, List(Of Byte))) As Dictionary(Of Byte, List(Of Byte)) 
    Dim kv As New Dictionary(Of Byte, List(Of Byte)) 
    For Each itm As KeyValuePair(Of Byte, List(Of Byte)) In List 
     Dim newList As New List(Of Byte)(itm.Value) ' <----- HERE !!! 
     kv.Add(itm.Key, newList) 
    Next 
    Return kv 
End Function 
+0

Vielen Dank hat funktioniert. –

Verwandte Themen