我有一个通用字典Dictionary<string, T>,从本质上讲,我想提出..any建议的Clone()。
Dictionary<string, T>
好的,.NET 2.0回答:
如果您不需要克隆值,则可以使用Dictionary的构造函数重载,它使用现有IDictionary。(您也可以将比较器指定为现有字典的比较器。)
如果您 确实 需要克隆值,则可以使用以下方法:
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, original.Comparer); foreach (KeyValuePair<TKey, TValue> entry in original) { ret.Add(entry.Key, (TValue) entry.Value.Clone()); } return ret; }
当然,这也依赖于TValue.Clone()适当深的克隆。
TValue.Clone()