【发布时间】:2015-09-03 20:50:15
【问题描述】:
是否有可能以方便的方式从字典中实现以下行为:
Dictionary<MyObject, double> d = new Dictionary<MyObject, double>
MyObject foo = new MyObject("foo");
d[foo] = 1.0;
Console.Write(d[new MyObject("foo")]) ---> 1.0
这个例子被简化了,我使用了一个稍微复杂的对象作为key。
用 MyObject 编辑替换的字符串
【问题讨论】:
-
我不明白,不同但相同的实例?您的代码按预期工作。它打印
1。 -
与
string它将正常工作(“开箱即用”)...对于其他对象类型,您必须覆盖GetHashCode和Equals -
它是不同的字符串,但内容相同。 new MyObject() == new MyObject() --> False
-
通常你会这样做
if (!d.ContainsKey(foo)) { d.Add(foo, 0) } d[foo] = 1.0; -
@CallumLinington:为什么? OP 的方法效率更高。
标签: c# dictionary