utilizzare il costruttore che prende un dizionario. Vedi questo esempio
var dict = new Dictionary<string, string>();
dict.Add("SO", "StackOverflow");
var secondDict = new Dictionary<string, string>(dict);
dict = null;
Console.WriteLine(secondDict["SO"]);
E solo per divertimento .. È possibile utilizzare LINQ! Qual è un approccio un po 'più generico.
var secondDict = (from x in dict
select x).ToDictionary(x => x.Key, x => x.Value);
Modifica
Questo dovrebbe funzionare bene con i tipi di riferimento, ho provato la seguente:
internal class User
{
public int Id { get; set; }
public string Name { get; set; }
public User Parent { get; set; }
}
E il codice modificato di cui sopra
var dict = new Dictionary<string, User>();
dict.Add("First", new User
{ Id = 1, Name = "Filip Ekberg", Parent = null });
dict.Add("Second", new User
{ Id = 2, Name = "Test test", Parent = dict["First"] });
var secondDict = (from x in dict
select x).ToDictionary(x => x.Key, x => x.Value);
dict.Clear();
dict = null;
Console.WriteLine(secondDict["First"].Name);
quali uscite " Filip Ekberg ".
fonte
2010-02-17 09:56:15
Guardare http://stackoverflow.com/questions/139592/che-è-il-best-way-to-clone-deep-copy-a-net-generic-dictionarystring-t – sashaeve
Ho visto che ma io non importa della copia profonda. Farà una copia poco profonda clone. Inoltre c'è una seconda parte alla mia domanda che è: è la ragione per cui non esiste un clone a causa della difficoltà che introduce il generico? – uriDium