Как я могу сгенерировать хеш-код для объекта на основе его идентичности.
Я имею в виду следующее:
object.ReferenceEquals(a, b) == true
a
b
object.ReferenceEquals(a, b) == false
Что у меня есть:
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
, если вы не переопределите GetHashCode, он вернет этот тождественный хеш-код.
GetHashCode
Ничего не делать - поскольку оба объекта указывают на один и тот же экземпляр, один и тот же HashCode всегда будет генерироваться для обоих объектов с использованием реализации по умолчанию.