Autor Beitrag
Palladin007
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Sa 09.06.12 17:10 
Moin

Immer, wenn ich die Equals-Methode überschreiben will, dann soll ich auch die GetHashCode-Methode überschreiben.
Hab ich kein Problem mit, aber da stellt sich bei mir die Frage, wofür der HashCode eigentlich noch ist.


Der wird ja in der Equals-Methode genutzt und gibt zumindest in der aktuellen Instanz des Programms ein Objekt eindeutig an.
Aber gibt es noch andere Verwendungs-Zwecke, wie z.B. die Rück-Wandlung in das ursprüngliche Objekt?
Denn genau das könnte ich sehr gut gebrauchen.


Gruß
Ralf Jansen
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 4708
Erhaltene Danke: 991


VS2010 Pro, VS2012 Pro, VS2013 Pro, VS2015 Pro, Delphi 7 Pro
BeitragVerfasst: Sa 09.06.12 17:27 
GetHashCode ist eine Performance Optimierung um Objekte zu vergleichen. Eine durchschnittliche Equals Methode muss ja alle Eigenschaften eines Objekts mit einem anderen vergleichen das ist aufwendig. Die .Net Infrastruktur wird üblicherweise immer versuchen erst GetHashcode zu verwenden bevor es auf Equals zurückgreift (insbesondere in Listen, Dictionaries, Hashsets). Und der Hash ist nicht umkehrbar. Vom Hash kannst du nicht eindeutig auf ein bestimmtest Objekt zurück schliessen. Ein gleicher Hash heißt nicht du hast das richtige Objekt (dann müsste noch der genaue Equals erfolgen). Nur bei einem ungleichen Hash Wert kannst du davon ausgehen das falsche Objekt zu haben.

Zitat:
Aber gibt es noch andere Verwendungs-Zwecke, wie z.B. die Rück-Wandlung in das ursprüngliche Objekt?


Der Hash sind 32 bit. Wenn die den gesamten Informationsgehalt eines komplexen Objektes beinhalten könnten wäre Magie im Spiel.
Palladin007 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1282
Erhaltene Danke: 182

Windows 11 x64 Pro
C# (Visual Studio Preview)
BeitragVerfasst: Sa 09.06.12 17:48 
Ok, dann kann ich also aufhören, nach mehr Aufgaben zu suchen

Danke für die Antwort^^