Подтвердить что ты не робот

Сравнение двух объектов.

Если у меня есть сложный объект, то каков наилучший пример для написания кода для сравнения двух экземпляров, чтобы увидеть, являются ли они одинаковыми

4b9b3361

Ответ 1

Внедрить интерфейс IEquatable. Это определяет обобщенный метод, который тип или класс значения реализует для создания специфичного для типа метода для определения равенства экземпляров. Не забудьте также переопределить Equals (объект). Дополнительная информация здесь:

http://msdn.microsoft.com/en-us/library/ms131187.aspx

Ответ 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, используя преимущества всех составных объектов