如何根据对象的身份生成哈希码。
我的意思是:
object.ReferenceEquals(a, b) == true
,则a
和b
将获得相同的哈希码。 object.ReferenceEquals(a, b) == false
,则a
和b
应该有相当大的机会获得不同的哈希码,即使它们在成员数上相等。 我所拥有的是:
class SomeClassThatMakesSenseToCompareByReferenceAndByValue {
override Equals(object o) {
return MemberwiseEquals(o);
}
override GetHashCode() {
return MemberwiseGetHashCode();
}
}
class SomeClassThatNeedsReferenceComparison {
SomeClassThatMakesSenseToCompareByReferenceAndByValue obj;
override Equals(object o) {
return o is SomeClassThatNeedsReferenceComparison && object.ReferenceEquals(this.obj, (o as SomeClassThatNeedsReferenceComparison).obj);
}
override GetHashCode() {
return ?????
}
}
最佳答案
您可能正在寻找RuntimeHelpers.GetHashCode
关于.net - NET中基于对象身份生成哈希码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3546915/