Jeśli nie zastępują GetHashCode
, cokolwiek, który porównuje swoich obiektów może się to źle.
Jak to jest udokumentowane, że GetHashCode
musi zwrócić tę samą wartość, jeśli dwie instancje są równe, to jest przywilejem dowolnego kodu, który chce przetestować je pod kątem równości, aby użyć GetHashCode
jako pierwszego przejścia do grupowania obiektów, które mogą być równe (ponieważ wie, że obiekty z różnymi hasłami nie mogą być równe). Jeśli twoja metoda GetHashCode
zwraca różne wartości dla równych obiektów, mogą one dostać się do różnych grup w pierwszym przebiegu i nigdy nie być porównywane przy użyciu ich metody Equals
.
Może to mieć wpływ na strukturę danych typu kolekcji, ale byłoby szczególnie problematyczne w przypadku takich kodów opartych na hashach, takich jak słowniki i zestawy skrótów.
W skrócie: Zawsze zastępuj GetHashCode
, gdy zastępujesz Equals
i upewnij się, że ich implementacje są spójne.
dziękuję za wyczyszczenie tego. –
W jaki sposób implementacja określa liczbę używanych wiaderek? Czy to jest stała wartość? –