如何根据对象的身份生成哈希码。

我的意思是:

  • 如果为object.ReferenceEquals(a, b) == true,则ab将获得相同的哈希码。
  • 如果为object.ReferenceEquals(a, b) == false,则ab应该有相当大的机会获得不同的哈希码,即使它们在成员数上相等。

  • 我所拥有的是:
    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/

    10-10 04:27