2010-06-11 9 views

Antwort

3

Erstellen Sie ein neues Dictionary Objekt, über die Tasten im ursprünglichen Wörterbuch iterieren und fügt diese Schlüssel und die entsprechenden Werte in das neue Wörterbuch, wie folgt aus:

Function CloneDictionary(Dict) 
    Dim newDict 
    Set newDict = CreateObject("Scripting.Dictionary") 

    For Each key in Dict.Keys 
    newDict.Add key, Dict(key) 
    Next 
    newDict.CompareMode = Dict.CompareMode 

    Set CloneDictionary = newDict 
End Function 

Dies sollte in den meisten Fällen ausreichen. Wenn Ihr ursprüngliches Wörterbuch jedoch Objekte enthält, müssen Sie das tiefe Klonen implementieren, also auch diese Objekte klonen.

+0

Ja, das ist wahr..aber gibt es eingebaute Funktionen zum Tiefklonen –

-1

Werfen Sie einen Blick auf die angenommene Antwort in VBScript: How to utiliize a dictionary object returned from a function?. Könnte eine Lösung sein, wenn nur eine Referenz gesucht wird.

bearbeiten Per Ekkehard.Horner Kommentar, ich verstehe jetzt, dass dies nicht klonen, kann aber andere helfen, die nur für einen Verweis auf das ursprüngliche Objekt suchen.

+1

Wörterbücher sind Objekte und übergeben Objekte an Subs/Functions/Methods (sogar mit ByVal), weisen Objekten Werte zu und geben Objekte von Funktionen/Methoden zurück (hoffentlich mit Set) wird * immer * mit Referenzen umgehen und niemals ein neues Objekt klonen/kopieren/erstellen. Also lösche bitte deine irreführende/falsche Antwort. –

Verwandte Themen