如何克隆这样的词典:
Dictionary<int, List<User>>()
我克隆它的每次尝试都会失败。
如果我有这个:
Dictionary<int, List<User>> dict1 = new Dictionary<int, List<User>>();
User user1=new User{Name="Mey"};
dict1.Add(1,user1);
这样做:
var dict2 = new Dictionary<int, List<User>>(dict1);
dict2仍然会引用user1而不是新的User对象。
我希望复制User对象,以便更改克隆属性不会反映在原始对象上。
修改:
所以我编写了以下代码片段:
var dict2 = new Dictionary<int, List<User>>();
//clone the dict1 dictionary
foreach (var item in dict1)
{
var list = new List<User>();
foreach (var u in item.Value)
{
list.Add(new User{ Name = u.Name, Total=u.Total});
}
dict2.Add(item.Key, list);
}
class User
{
public string Name{get;set;}
public double Total{get;set;}
}
答案 0 :(得分:3)
.Net集合没有内置的克隆支持。
您需要创建一个新的字典,循环遍历原始字典中的所有条目,在新字典中添加一个带有新List<User>
的相应条目,并循环遍历原始列表以添加User
对象到新列表。
答案 1 :(得分:0)