ERLEDIGT
NEIN
NEIN
ANTWORTEN
0
0
ZUGRIFFE
1041
1041
EMPFEHLEN
-
01.01.07 15:23 #1
- Registriert seit
- Jun 2002
- Ort
- Saarbrücken (Saarland)
- Beiträge
- 9.886
- Blog-Einträge
- 29
Hallo,
hier mal ein Beispiel dafür wie man von einer Instanz den sogenannten IdentityHashCode (der Rückgabewert der System.Object.GetHashCode -Methode) ermitteln kann, selbst wenn das jeweilige Objekt die GetHashCode Methode überschreibt.
Code csharp:1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
using System; using System.Collections.Generic; using System.Text; namespace De.Tutorials.Training { public class IdentityHashCodeExample { public static void Main(string[] args) { Bu foo = new Bu("hallo"); Bu bar = new Bu("hallo"); Console.WriteLine(foo.Equals(bar)); Console.WriteLine(bar.Equals(foo)); Console.WriteLine("Bu.GetHashCode() foo -> " + foo.GetHashCode()); Console.WriteLine("Bu.GetHashCode() bar -> " + bar.GetHashCode()); Console.WriteLine("Object.GetHashCode() foo -> " + foo.BaseGetHashCode()); Console.WriteLine("Object.GetHashCode() bar -> " + bar.BaseGetHashCode()); Console.WriteLine("Object.GetHashCode() foo -> " + System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(foo)); Console.WriteLine("Object.GetHashCode() bar -> " + System.Runtime.CompilerServices.RuntimeHelpers.GetHashCode(bar)); } } public class Bu { string data; public Bu(string data) { this.data = data; } public int BaseGetHashCode() { return base.GetHashCode(); } public override int GetHashCode() { return data.GetHashCode(); } public override bool Equals(object obj) { if (!(obj is Bu)) { return false; } return this.data.Equals(((Bu)obj).data); } } }
Beispiel-Ausgabe:
Code :1 2 3 4 5 6 7 8 9
True True Bu.GetHashCode() foo -> 7954913 Bu.GetHashCode() bar -> 7954913 Object.GetHashCode() foo -> 58225482 Object.GetHashCode() bar -> 54267293 Object.GetHashCode() foo -> 58225482 Object.GetHashCode() bar -> 54267293 Drücken Sie eine beliebige Taste . . .
Der IdentityHashCode ist beispielsweise in den Szenarien interessant in denen man Instanzen als Keys für Hash-basierte Collections einsetzen möchte.
Gruß TomJava rocks!
How to become a good Java Programmer?
Does IT in Java and .Net
The only valid measurement of code quality: WTFs / minute
Blog
Xing
Twitter
Ähnliche Themen
-
hashCode()
Von Maddimini im Forum JavaAntworten: 6Letzter Beitrag: 03.01.11, 15:11 -
hashCode neu implementieren
Von soeni1987 im Forum Algorithmen & Datenstrukturen mit JavaAntworten: 6Letzter Beitrag: 13.08.09, 10:49 -
MsSQL Server 2000: Was bedeutet Identity u. Identity Seed?
Von DataFox im Forum Relationale DatenbanksystemeAntworten: 2Letzter Beitrag: 01.05.08, 10:09 -
hashCode()
Von chickenwings im Forum JavaAntworten: 6Letzter Beitrag: 25.01.06, 08:29 -
HashCode() eines int[ ] Arrays
Von -ben- im Forum JavaAntworten: 4Letzter Beitrag: 04.12.05, 18:07






Zitieren
Login





