Sobes.tech
Junior — Middle

Warum ist es wichtig, die Methode GetHashCode in Klassen zu überschreiben?

sobes.tech KI

Antwort von AI

Das Überschreiben der Methode GetHashCode ist wichtig für das korrekte Funktionieren von Objekten in hash-basierten Sammlungen wie Dictionary, HashSet und anderen.

Gründe:

  • GetHashCode gibt einen numerischen Wert zurück, der für die schnelle Suche nach einem Objekt in Hash-Tabellen verwendet wird.
  • Wenn zwei Objekte als gleich angesehen werden (nach der Methode Equals), sollten sie denselben Hash-Code zurückgeben, damit die Sammlungen sie korrekt verarbeiten.
  • Wenn GetHashCode nicht zusammen mit Equals überschrieben wird, können Objekte falsch verglichen oder dupliziert werden in den Sammlungen.

Beispiel:

class Person
{
    public string Name { get; set; }
    public int Age { get; set; }

    public override bool Equals(object obj)
    {
        if (obj is Person other)
            return Name == other.Name && Age == other.Age;
        return false;
    }

    public override int GetHashCode()
    {
        return HashCode.Combine(Name, Age);
    }
}

Auf diese Weise stellt die Überschreibung von GetHashCode die Konsistenz mit Equals sicher und sorgt für das korrekte Funktionieren der Objekte in Hash-Strukturen.