Реализация IEquatable и сравнение с помощью оператора == - C#

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

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

Есть вот такой простенький класс с реализацией IEquatable<T>
public class Point : IEquatable<Point>
        {
            public int X { get; set; }
            public int Y { get; set; }
 
            public Point(int x, int y)
            {
                X = x;
                Y = y;
            }
 
            public bool Equals(Point point)
            {
                if (point == null)
                    return false;
                if (X == point.X && Y == point.Y)
                    return true;
                return false;
            }
        }
Но при сравнении всегда вылезает false, не могу понять в чем проблема
            Point a = new Point(1, 1);
            Point b = new Point(1, 1);
 
            if (a == b)
            //всегда возвращает false

Решение задачи: «Реализация IEquatable и сравнение с помощью оператора ==»

textual
Листинг программы
var point = new Point(10,20);
var set = new HashSet<Point>();
for (int i = 0; i < 5; i++)
{
    set.Add(point);
    point.X++;
}
 
Console.WriteLine(set.Contains(point));

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


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

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

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