0
是否有可能讓Dictionary<>
類使用IEqualityComparer
在它用作鍵的類中指定,而不是在每次構建它時將其指定爲參數?默認使用自定義類IEquality,而不是將其指定爲參數?
public class mytest : IEqualityComparer<mytest>
{
public string name = "foo";
bool IEqualityComparer<mytest>.Equals(mytest x, mytest y) { return x.name == y.name; }
int IEqualityComparer<mytest>.GetHashCode(mytest obj) { return obj.name.GetHashCode(); }
public override int GetHashCode() { return name.GetHashCode(); }
}
...
var a = new Dictionary<mytest, int>();
a.Add(new mytest(), 1);
a.Add(new mytest(), 2);//does not throw error...bad!
var b = new Dictionary<mytest, int>(new mytest());
b.Add(new mytest(), 1);
b.Add(new mytest(), 2);//will throw error...good!
謝謝,我完全忘記了在執行'GetHashCode'之後重寫'Equals()'方法 – maxp 2013-03-07 11:18:00