Реализация равенства по умолчанию для ссылочных типов - это ссылочное равенство: «это тот же самый экземпляр».Для эквивалентности, да, вы должны написать это сами, если вам это нужно, но: на самом деле это не так уж и полезно (и есть проблема, потому что если вы переопределяете Equals
, вы должны переопределить также GetHashCode
с подходящей параллельной реализацией.
Лично я бы сравнил вручную в вашем модульном тесте, если этот код не является частью вашей основной системы.
Списки также являются проблемой, так как есть три варианта:
- один и тот же экземпляр списка
- разные списки с одинаковыми экземплярами контента
- разные списки с эквивалентными экземплярами контента
Вывероятно, означают последнее, но это та же самая проблема, повторенная.
Повторная сериализация: это тоже сложно, так как это зависит от сериализатора и содержимого. Я бы не рекомендовал этот маршрут, если: ваш типуже используется для сериализации, и b: выбранный вами сериализатор гарантирует семантику, которую вы имеете в виду. Например, BinaryFormatter
не (я могу дать конкретный примересли хочешь, но поверь мне: это не гарантировано).