Monday, 04 April 2005

Einige .NET Entwickler werden die GetHashCode() Funktion kennen, ist sie doch meist (situationsbedingt) recht nützlich. Aber Achtung vor falscher Anwendung. Man könnte meinen, dass bei den großen Hash-Werten (Int32) auch genügend Spielraum für die Kombination (sprich Addition) der einzelnen Werte zur Verfügung steht.

Dies sollte man jedoch vermeiden. Ich habe erst neulich einige Zeit damit verbracht einen Bug zu finden, der daraus resultierte, weil

"2307".GetHashCode() + "IA0/7".GetHashCode() + "RBL-RRB2".GetHashCode()
und
"2305".GetHashCode() + "IA0/6".GetHashCode() + "RBL-RRB1".GetHashCode()

tatsächlich dieselbe Summe (2048949580) besitzen.

Also immer dran denken, niemals Hashwerte addieren, dann lieber alles als einen String interpretieren und diesen dann hashen. Denn "2307IA0/7RBL-RRB2".GetHashCode() ist nicht gleich "2305IA0/6RBL-RRB1".GetHashCode()

Monday, 04 April 2005 15:23:33 (GMT Daylight Time, UTC+01:00)  #    Comments [53]  | 

Theme design by Jelle Druyts

Pick a theme: