Если у меня есть сложный объект, то каков наилучший пример для написания кода для сравнения двух экземпляров, чтобы увидеть, являются ли они одинаковыми
Сравнение двух объектов.
Ответ 1
Внедрить интерфейс IEquatable. Это определяет обобщенный метод, который тип или класс значения реализует для создания специфичного для типа метода для определения равенства экземпляров. Не забудьте также переопределить Equals (объект). Дополнительная информация здесь:
Ответ 2
Я думаю, что ответ сильно зависит от проблем. Например, вы можете рассматривать объекты равными, только если все их свойства эквивалентны. Это, возможно, будет иметь место, когда каждый объект не имеет однозначно идентифицирующего свойства. Если есть такое свойство (или свойства), скажем, идентификатор или идентификатор и версия, который однозначно идентифицирует каждый объект типа, вы можете захотеть сравнить только на основе этого свойства (или свойств).
Базовый шаблон, однако, должен быть примерно таким:
if their references are equal (includes both null)
return true
else if one object is null
return false
else
return value based on relevant properties
Обратите внимание, что если вы переопределите оператор Equals, вы также захотите переопределить GetHashCode(), чтобы хэш-коды для эквивалентных объектов были одинаковыми. Это гарантирует, что структуры данных, которые используют хэш-код для определения повторяющихся ключей, работают правильно, когда объект используется в качестве ключа.
Ответ 3
Поскольку вы упомянули сложный объект, убедитесь, что все составные объекты в реализации сложного объекта равны (Object), как указано tvanfosson. Наконец, реализовать equals в объекте Complex, используя преимущества всех составных объектов