Вопрос связанный с Equals C#

введите сюда описание изображения

Почему метод Object.Equals() возвращает false, если по сути у них одно и тоже значение?


Ответы (1 шт):

Автор решения: Vyacheslav Benedichuk

Метод Object.Equals не знает ничего об особенностях реализации вашего класса Test. Он просто проверяет совпадение указателя на текущий объект и на переданный в него в качестве параметра.

Что бы у вас заработало как ожидается, вам нужно реализовать свой вариант метода Equals Например так:


   public override bool Equals(Object obj)
   {
      if ((obj == null) || !this.GetType().Equals(obj.GetType()))
      {
         return false;
      }
      else {
         Test o = (Test) obj;
         return (x == o.x);
      }
   }

Так же рекомендую почитать информацию о методе equals в MSDN. Там очень подробно разобрано.

→ Ссылка