Как оператор ==
действительно работает в C #? Если он раньше сравнивал объекты класса A , попытается ли он сопоставить все свойства A или будет искать указатели на ту же ячейку памяти (или, возможно, что-то еще) )
Давайте создадим гипотетический пример. Я пишу приложение, которое использует Twitter API, и у него есть класс Tweet , который имеет все свойства одного твита: текст, отправитель, дата и время, источник и т. Д. Если я хочу сравнить объекты класса Tweet для эквивалентности, могу ли я просто использовать:
Tweet a, b;
if (a == b)
{
//do something...
}
Будет ли проверять эквивалентность всех свойств класса Tweet между a и b ?
Если нет, будет правильным подходом перегрузить оператор ==
для явной проверки на эквивалентность всех полей?
ОБНОВЛЕНИЕ: Из первых двух ответов я прав, предполагая:
- Если оператор
==
или метод Equals не перегружен для класса, используется оператор ==
для класса object .
- Оператор
==
для объекта класса проверяет равенство в ячейке памяти.
- Мне нужно перегрузить оператор
==
или метод Equals для выполнения этой задачи.
- При перегрузке я должен проверять эквивалентность свойств вручную, поэтому нет способа сделать это полуавтоматически, скажем, в цикле , верно?
ОБНОВЛЕНИЕ № 2: Юрий отметил, что можно проверить эквивалентность свойств в операторе ==
с отражением . Как это может быть сделано? Не могли бы вы дать мне пример кода? Спасибо!