Равенство между объектами может принимать разные формы, в зависимости от того, что именно вам нужно.Чтобы ответить на ваш вопрос:
Нет , то, что Person
реализует IEquatable
, не означает, что SalaryInformation
реализует IEquatable
.Отношения между Person
и SalaryInformation
являются композицией, а композиции не заботятся о реализации интерфейса.
Реализация Equals
Person
, таким образом, зависит от того, когда вы считаете, что два человека одинаковы:
- Они одинаковы, если у них одинаковые имя и фамилия?
- Они одинаковы, если у них тоже одинаковые
SalaryInformation
тоже?
Кроме того, если вы хотите иметь возможность сравнивать объекты на равенство, следует помнить следующее:
- Равенство - это отношение эквивалентности, т. Е. Оно
a.возвратный,
б.симметричный и
c.переходный. - Помните, что
null
не равен ни одному объекту. - Всегда переопределяйте
GetHashCode
тоже.
Если вы поняли этоэто не сложно сделать правильно, но если вы никогда этого не сделали, могут возникнуть всевозможные проблемы.