Переопределение метода GetHashCode() - C#

Узнай цену своей работы

Формулировка задачи:

В МСДН прописано, что если программист решит переопределить метод Equals, то стоит и переопределить GetHashCode. На примере класса, описывающего простую точку с положениями на двух осях были переопределены эти методы таким образом:
Листинг программы
  1. class TwoDPoint : System.Object
  2. {
  3. public readonly int x, y;
  4. public TwoDPoint(int x, int y) //constructor
  5. {
  6. this.x = x;
  7. this.y = y;
  8. }
  9. public override bool Equals(System.Object obj)
  10. {
  11. // If parameter is null return false.
  12. if (obj == null)
  13. {
  14. return false;
  15. }
  16. // If parameter cannot be cast to Point return false.
  17. TwoDPoint p = obj as TwoDPoint;
  18. if ((System.Object)p == null)
  19. {
  20. return false;
  21. }
  22. // Return true if the fields match:
  23. return (x == p.x) && (y == p.y);
  24. }
  25. public bool Equals(TwoDPoint p)
  26. {
  27. // If parameter is null return false:
  28. if ((object)p == null)
  29. {
  30. return false;
  31. }
  32. // Return true if the fields match:
  33. return (x == p.x) && (y == p.y);
  34. }
  35. public override int GetHashCode()
  36. {
  37. return x ^ y;
  38. }
  39. }
Зачем вообще в этом случае требуется переопределение хеш кода и как понимать эту конструкцию - x ^ y?

Решение задачи: «Переопределение метода GetHashCode()»

textual
Листинг программы
  1. a.GetHashCode() == b.GetHashCode() && a.Equals(b)

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

12   голосов , оценка 4.25 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы