YaKotikTvoy
@YaKotikTvoy
Стьюдик

Почему Equals не сравнивает объекты?

У меня есть класс Hash, у него внутри коллекция List values = new List();
У Client два наследника Organization и Person, они хранятся в values.
Когда я бегу по values for-ом, сравнивая Equals-ом его хранимые объекты с тем объектом, который там точно есть, потому что я его сам туда добавил через метод Add, Equals всёравно выдаёт всегда false, хотя должен по-идее выдать true. Что делаю не так?
public object Find(Client client)
        {
            for (int i = 0; i < keys.Count; i++)
            {
                if (client.Equals(values[i]))
                    return keys[i];
            }
            return null;
        }
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
vabka
@vabka Куратор тега C#
Токсичный шарпист
По умолчанию Equals сравнивает по ссылкам. По тому даже сравнение абсолютно идентичных, но разных объектов в результате даст false.

Чтобы это изменить, тебе нужно самостоятельно переопределить метод Equals в классах Client, Organization, и Person.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы