Zawiodłem się
Zawiodłem się na GetHashCode, zawiodłem dwa razy 😏 – tak mi się wydaje. Po dwakroć dałem się zrobić w balona, mam nadzieje, że trzeciego razu nie będzie i stąd także ten wpis.
GetHashCode
Liczy hash z obiektu, który dostał, ma to zrobić szybko i zwrócić ten sam hash code dla tego samego obiektu (dokumentacja: https://docs.microsoft.com/en-us/dotnet/api/system.object.gethashcode?view=netcore-3.1)
Robi to, o co prosisz, patrz na kod:
Uruchomiony daje takie wyniki:
42
42
595726643
595726643
-345413569
-345413569
Jeszcze raz, zrób to jeszcze raz!
Czyli co, dla cyferek zwraca cyferkę, ale stringów unikatową dla nich cyferkę, dla obiektów także. Gdy zapomnisz tego, co ja i oprzesz swoją unikatowość na hash code, jak bardzo się zdziwisz i 🤦♂️ gdy po ponownym uruchomieniu zobaczysz taki wynik:
42
42
886905884
886905884
-54234328
-54234328
Cyferki dla cyferek, yolo dla obiektów.
Mądrość
Jarek – pamiętaj, GetHashCode yolo!
Twórz samodzielnie sumy (SHA256/MD5), albo nadpisuj GetHashCode. Nie opieraj swojej aplikacji i bazy danych na wartościach z domyślnej wartości (implementacji) GetHashCode, przy każdym uruchomieniu masz inny seed. Jeśli chcesz, nadpisz i upewnij się, że zawsze te same obiekty mają ten sam hashcode, nie ważne kiedy zostaną powołane do życia
A jeśli zapomnisz o tym i zrobisz fupa jak moje, wróć i przybij mi wirtualną piątkę 🙋♂️🙋♀️
Dziękuje za uwagę i życzę miłego dnia! 🌞
Dzięki za poradę z góry :)) mam nadzieje ze zapamiętam heh czasami yolo samo wypływa z palców.