2010-06-11 176 views

回答

3

創建一個新的Dictionary對象,通過在原有的字典中的密鑰進行迭代,並添加這些鍵和相應的值到新的字典,像這樣:

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 

這應該足以在大多數情況下。但是,如果您的原始字典包含對象,則必須實施深度克隆,也就是克隆這些對象。

+0

是的,這是真的..但有沒有內置的功能來執行深層克隆 – 2010-06-12 01:06:18

-1

看看VBScript: How to utiliize a dictionary object returned from a function?中接受的答案。可能是一個解決方案,如果參考是所有正在尋找。每Ekkehard.Horner的評論

編輯作爲,我現在明白了,這是不克隆,但是可以幫助別人誰只是在尋找原始對象的引用。

+1

詞典是對象和傳遞對象到子/函數/方法(即使與ByVal),分配對象的值,並從函數/方法返回對象(希望使用Set)將*總是*處理引用,並且永遠不克隆/複製/創建一個新對象。所以請刪除你的誤導/錯誤的答案。 – 2012-11-04 14:52:29