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

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

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

В МСДН прописано, что если программист решит переопределить метод Equals, то стоит и переопределить GetHashCode. На примере класса, описывающего простую точку с положениями на двух осях были переопределены эти методы таким образом:
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;
    }
}
Зачем вообще в этом случае требуется переопределение хеш кода и как понимать эту конструкцию - x ^ y?

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

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

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


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

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

12   голосов , оценка 4.25 из 5
Похожие ответы