我有结构
struct User
{
public int id;
public Dictionary<int, double> neg;
}
List<User> TempUsers=new List<users>();
List<User> users = new List<User>();
Run Code Online (Sandbox Code Playgroud)
我的问题是,当我运行此代码时
TempUsers=users.ToList();
TempUsers[1].neg.Remove(16);
Run Code Online (Sandbox Code Playgroud)
用户的否定字典aslo删除值为16的键
那是因为它Dictionary
是一个参考类型.你应该克隆它,样本:
class User : IClonable
{
public int Id { get; set; }
public Dictionary<int, double> Neg { get; set; }
public object Clone()
{
// define a new instance
var user = new User();
// copy the properties..
user.Id = this.Id;
user.Neg = this.Neg.ToDictionary(k => k.Key,
v => v.Value);
return user;
}
}
Run Code Online (Sandbox Code Playgroud)
你不应该struct
在这样的类型中使用a .在这个链接中,有一个关于何时以及如何使用结构的很好的解释.
归档时间: |
|
查看次数: |
671 次 |
最近记录: |