Использование GetHashCode для проверки равенства в переопределении Equals

Можно ли вызвать GetHashCode как метод проверки равенства из переопределения Equals?

Например, приемлем ли этот код?

public class Class1
{
  public string A
  {
    get;
    set;
  }

  public string B
  {
    get;
    set;
  }

  public override bool Equals(object obj)
  {
    Class1 other = obj as Class1;
    return other != null && other.GetHashCode() == this.GetHashCode();
  }

  public override int GetHashCode()
  {
    int result = 0;
    result = (result ^ 397) ^ (A == null ? 0 : A.GetHashCode());
    result = (result ^ 397) ^ (B == null ? 0 : B.GetHashCode());
    return result;
  }
}
9
задан Armbrat 23 November 2010 в 14:21
поделиться