Первоначально я «dict» и «dict2», который является копией «dict».
Если я заменю ключ на «dict», изменение будет применено и к dict2
Как этого можно избежать? Ниже приведен пример кода.
Sub Main()
Dim dict As New Dictionary(Of String, Object) From {{"Big", "Small"}, {"Hot", "Cold"}}
Dim dict2 As New Dictionary(Of String, Object) : dict2 = dict
If dict.ContainsKey("Hot") Then 'Only makes changes to dict
dict.Add("Warm", dict("Hot").ToString)
dict.Remove("Hot")
End If
writeDict(dict) 'Displays said changes
writeDict(dict2) 'Displays same changes as dict
End Sub
Sub writeDict(dict As Dictionary(Of String, Object)) 'Ignore this
For Each i As KeyValuePair(Of String, Object) In dict
Console.Write(i.ToString)
Next
Console.ReadLine()
End Sub
В идеале я должен передать 'dict' другому Sub, проверить его, заменив некоторые ключи, а затем выйти из Sub.
Затем я возобновил бы работу с оригинальным словарем.
Но в настоящее время это не работает, потому что изменения в словарях кажутся глобальными.