2010-06-11 7 views

Trả lời

3

Tạo một đối tượng mới Dictionary, lặp thông qua các phím trong từ điển gốc và thêm các phím và các giá trị tương ứng vào từ điển mới, như thế này:

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 

này nên là đủ trong hầu hết các trường hợp. Tuy nhiên, nếu từ điển gốc của bạn chứa các đối tượng, bạn sẽ phải thực hiện sao chép sâu, tức là, nhân bản các đối tượng này.

+0

Có thats true..but là có bất kỳ chức năng được xây dựng trong để thực hiện nhân bản sâu –

-1

Hãy xem câu trả lời được chấp nhận trong VBScript: How to utiliize a dictionary object returned from a function?. Có thể là một giải pháp nếu một tham chiếu là tất cả những gì đang được tìm kiếm.

Sửa Theo nhận xét của Ekkehard.Horner, tôi hiểu bây giờ mà đây là không nhân bản, nhưng có thể giúp những người khác được người chỉ tìm kiếm một tham chiếu đến đối tượng gốc.

+1

Từ điển là đối tượng và chuyển đối tượng cho Subs/Functions/Methods (ngay cả với ByVal), gán đối tượng vào giá trị và trả về đối tượng từ hàm/phương thức (hy vọng với Set) sẽ luôn * đối phó với các tham chiếu và không bao giờ sao chép/sao chép/tạo một đối tượng mới. Vì vậy, hãy xóa câu trả lời sai lầm/sai của bạn. –