IComparable-und Equals()

Vom MSDN

Typen, die die IComparable implementieren, müssen Equals überschreiben.Typen, überschreiben von Equals muss auch GetHashCode überschreiben; ansonsten Hashtable möglicherweise nicht korrekt.

Ich habe es nicht ganz verstanden. Kann das jemand erklären.

  • Für mehr die Beziehung zwischen Equals und GetHashCode: stackoverflow.com/questions/371328/...
  • Beachten Sie auch, dass, während es ist notwendig, dass die Verträge von IComparable, Equals und GetHashCode() einzuhalten sind in jedem Fall, es ist nicht unbedingt erforderlich, explizit zu implementieren, die alle drei, so lange, wie konsistente Ergebnisse erzielt werden. In Erster Linie bedeutet, dass zwei Objekte mit demselben hash-code gleich sind, und 0 zurück auf CompareTo().
  • Ich denke, die Aussage ist falsch: 'vor Allem bedeutet, dass zwei Objekte mit demselben hash-code gleich sind, und 0 zurück auf CompareTo().' . Wenn die Objekte Gleich sind, ist es empfehlenswert, GetHashCode (), um wieder den gleichen Wert und CompareTo() auf 0 zurück. Sie können ganz einfach erzeugen unterschiedliche/nicht gleich Instanzen, die denselben hash-code haben 🙂
InformationsquelleAutor devnull | 2009-09-14
Schreibe einen Kommentar