mikeymo mikeymo - 1 year ago 352
C# Question

What is the best way to clone/deep copy a .NET generic Dictionary<string, T>?

I've got a generic dictionary Dictionary that I would like to essentially make a Clone() of ..any suggestions.

Answer Source

Okay, the .NET 2.0 answers:

If you don't need to clone the values, you can use the constructor overload to Dictionary which takes an existing IDictionary. (You can specify the comparer as the existing dictionary's comparer, too.)

If you do need to clone the values, you can use something like this:

public static Dictionary<TKey, TValue> CloneDictionaryCloningValues<TKey, TValue>
   (Dictionary<TKey, TValue> original) where TValue : ICloneable
    Dictionary<TKey, TValue> ret = new Dictionary<TKey, TValue>(original.Count,
    foreach (KeyValuePair<TKey, TValue> entry in original)
        ret.Add(entry.Key, (TValue) entry.Value.Clone());
    return ret;
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download