Не удалось загрузить карту. Ошибка связи с серверами Google. Вероятно, это проблема аутентификации

Прежде всего, вы уверены, что хотите переопределить Equals() и GetHashCode()? В большинстве сценариев вы должны быть в порядке с ссылочным равенством по умолчанию.

Но, допустим, нет. Чем, какова соответствующая семантика равенства, которую вы хотите?

Например, предположим, что каждый A имеет поле getB типа B, и каждый B имеет поле getA типа A. Пусть a1 и a2 - два объекта A, имеют одинаковые поля и одинаковые getB (такие же, как в «том же адресе памяти») b1. Являются ли a1 и a2 равными? Предположим, что b1.getA совпадает с a1 (то же, что и в «том же адресе памяти»), но не совпадает с a2. Вы все еще хотите считать a1 и a2 равными?

Если нет, не переопределяйте что-либо и не используйте ссылочное равенство по умолчанию.

Если да, то вот решение: пусть A имеет функцию int GetCoreHashCode(), которая не зависит от элемента getB (но зависит от других полей). Пусть функция B имеет функцию int GetCoreHashCode(), которая не зависит от элемента getA (но зависит от других полей). Пусть теперь функция int GetHashCode() A зависит от this.GetCoreHashCode() и getB.GetCoreHashCode(), а также для B, и вы закончили.

31
задан gre_gor 17 December 2015 в 12:04
поделиться