Die Equals -Methode in der FOO -Klasse wiederwarten, um das FOOID -Attribut zu vergleichen, um die Konsistenz des Objekts gleich zu gewährleisten. Das Umschreiben der Gethashcode -Methode ist jedoch auch sehr wichtig, um den Regeln dieser beiden Methoden einzuhalten.
Die Bedeutung des Umschreibens von Gethashcode
Wenn das Objekt als Schlüssel in Datenstrukturen wie Wörterbuch oder Hash -Set verwendet wird, wird Gethashcode verwendet, um zu bestimmen, welcher Lauf platziert werden soll, in welcher Fass platziert werden soll. Wenn der Hash -Code der beiden Objekte (definiert durch Gleichen) als unterschiedlich angesehen werden sollte, können sie niemals verglichen werden, was zu einer falschen Bewertung der gleichen Natur führt.
In diesem Fall lautet die Empfehlung von Gethashcode:
Dies steht im Einklang mit der Logik der Equals -Methode.Erweiterte Überlegung
public override int GetHashCode() => base.GetHashCode();
Für kompliziertere Objekte, die mehrere Attribute in der gleichen Natur beinhalten
<加> Fügen Sie Bequemlichkeit
hinzuAus Gründen der Bequemlichkeit können Sie die Implementierung in Betracht ziehen.
public override int GetHashCode() { unchecked { int hash = 13; hash = (hash * 7) + FooId.GetHashCode(); hash = (hash * 7) + FooName.GetHashCode(); return hash; } }
Das obige ist der detaillierte Inhalt vonWie kann man eine konsistente Objektgleichheit und Hashing in C#beibehalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!