dictionary.Keys.First().GetHashCode() == dictionary.Keys.First().GetHashCode()
返回真
dictionary.Keys.First() == dictionary.Keys.First()
返回真
缺少什么?为什么字典找不到这个对象?
字典类型: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();
}
最佳答案
key 首先添加到 Dictionary<,>
当它有一个哈希码时。之后,该对象被“变异”以提供哈希码是某个新数字的状态。
Dictionary<,>
因此处于无效状态。
不要改变可能是某个哈希表中某处键的对象,以改变该对象的哈希码的方式。
关于c# - 什么会导致 dictionary.ContainsKey(dictionary.Keys.First()) 返回 false?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17711195/