dictionary.Keys.First().GetHashCode() == dictionary.Keys.First().GetHashCode()
返回true
dictionary.Keys.First() == dictionary.Keys.First()
返回true
缺少什么?为什么字典不能找到这个对象?
字典类型:Dictionary<ExceptionWrapper<Exception>, List<int>>
。
以下是ExceptionWrapper.Equals
和ExceptionWrapper.GetHashCode
的实施:
public override int GetHashCode() {
return (typeof(TException).FullName + exception.Message + exception.StackTrace).GetHashCode();
}
public override bool Equals(object obj) {
return
obj is ExceptionWrapper<TException>
&& (obj as ExceptionWrapper<TException>).GetHashCode() == GetHashCode();
}
答案 0 :(得分:4)
当密钥有一个哈希码时,密钥首先被添加到Dictionary<,>
。在此之后,对象被“变异”以给出哈希码是新数字的状态。
因此Dictionary<,>
处于无效状态。
不要改变某个散列表中可能是某个键的对象,改变该对象的散列码。