Переопределение метода GetHashCode() - C#
Формулировка задачи:
В МСДН прописано, что если программист решит переопределить метод Equals, то стоит и переопределить GetHashCode. На примере класса, описывающего простую точку с положениями на двух осях были переопределены эти методы таким образом:
Зачем вообще в этом случае требуется переопределение хеш кода и как понимать эту конструкцию - x ^ y?
Листинг программы
- class TwoDPoint : System.Object
- {
- public readonly int x, y;
- public TwoDPoint(int x, int y) //constructor
- {
- this.x = x;
- this.y = y;
- }
- public override bool Equals(System.Object obj)
- {
- // If parameter is null return false.
- if (obj == null)
- {
- return false;
- }
- // If parameter cannot be cast to Point return false.
- TwoDPoint p = obj as TwoDPoint;
- if ((System.Object)p == null)
- {
- return false;
- }
- // Return true if the fields match:
- return (x == p.x) && (y == p.y);
- }
- public bool Equals(TwoDPoint p)
- {
- // If parameter is null return false:
- if ((object)p == null)
- {
- return false;
- }
- // Return true if the fields match:
- return (x == p.x) && (y == p.y);
- }
- public override int GetHashCode()
- {
- return x ^ y;
- }
- }
Решение задачи: «Переопределение метода GetHashCode()»
textual
Листинг программы
- a.GetHashCode() == b.GetHashCode() && a.Equals(b)
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д