【发布时间】:2018-07-20 08:22:42
【问题描述】:
我正在尝试制作 (string, WI) 的字典,其中 WI 是我定义的类。
代码如下所示:
namespace Tracking
{
class Program
{
static public Dictionary<string, WI> Dict = new Dictionary<string, WI>();
static void Main(string[] args)
{
WI oWI = new WI(some_arg);
string key = "mykey";
if (!Dict.ContainsKey(key))
{
Dict.Add(key, oWI);
}
var before = Dict[key];
oWI = new WI(another_arg);
var after = Dict[key];
}
}
}
问题是oWI改了之后,Dict[key].Value里面的东西也都变了,即“before”和“after”的值不一样。
他们之间似乎有联系。如何断开连接?字典不应该制作自己的 WI 对象副本吗?我做错了什么?
【问题讨论】:
-
这不是真的。实际上
oWI是一个变量。这就像一个城市的高速公路标志,例如显示通往伦敦的方向。现在您保留标志上的文字,但将方向更改为巴黎。发生了什么?您是否已将伦敦更改为巴黎,或者您刚刚更改了标志?您还没有更改仍然存储旧实例而不是新实例的字典。 -
无法重新创建。如果我输入一个微不足道的
WI,那么before会得到最初添加到字典中的值,这不会通过更新oWI来改变。请包含显示此行为的最小重新创建。 -
@Richard 我将编辑问题。我试图保持简短。
-
如何检查两个实例是否相同?
标签: c# dictionary object