【发布时间】:2015-02-07 14:14:59
【问题描述】:
我有一个名为 baseDictionary 的字典。键是字符串,值是名为 myData 的类的属性。特别是这些属性是:“age”(作为 int)、“nationality”(作为字符串)和“income”(作为 double)。
所以 baseDictionary 有一些字符串作为键,每个键都有一系列与特定人相关的属性。 我想在某个时候制作这本字典的深层副本,这样我就可以在不修改原始字典内容的情况下使用这个新副本。 我在 stackoverflow 中找到了一个答案,建议使用以下代码来执行此深层复制:
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;
}
问题是我不明白我应该如何修改它以使其与我的字典一起使用。例如我试过:
public static Dictionary<string, myData> CloneDictionaryCloningValues<TKey, TValue>
(Dictionary<string, myData> original) where TValue : ICloneable
{
Dictionary<string, myData> ret = new Dictionary<string, myData>(original.Count,
original.Comparer);
foreach (KeyValuePair<string, myData> entry in original)
{
ret.Add(entry.Key, (myData)entry.Value.Clone());
}
return ret;
}
但是我收到以下错误并且它不起作用。
错误 3 'Project2.myData 不包含 'Clone' 的定义,并且没有扩展方法 'Clone' 接受类型的第一个参数 'Project2.myData 可以找到(您是否缺少 using 指令或 程序集参考?)
我该如何解决这个问题?
【问题讨论】:
标签: c# dictionary copy