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();
}
dictionary
的类型是什么?一个代码片段可能会有所帮助。 - dlevEquals
方法也非常错误;它会在两个哈希值巧合相等时返回true
。这些只是评论,而不是对你问题的回答。 - Jeppe Stig Nielsen