Sobes.tech
Junior — Middle

Was ist die Rolle der Methode GetHashCode bei der Verwendung eines Wörterbuchs oder einer Hash-Sammlung?

sobes.tech KI

Antwort von AI

Die Methode GetHashCode spielt eine entscheidende Rolle bei der Verwendung von Wörterbüchern (Dictionary) und anderen Hash-Sammlungen in C#. Sie gibt einen Ganzzahlwert (Hash-Code) zurück, der verwendet wird, um die Position eines Objekts in der Hash-Tabelle schnell zu bestimmen.

Wenn Sie ein Objekt zu einem Wörterbuch hinzufügen, wird zuerst GetHashCode aufgerufen, um den Korb (bucket) zu bestimmen, in den das Element eingefügt wird. Bei der Suche nach einem Element anhand des Schlüssels wird ebenfalls zuerst der Hash-Code berechnet, um schnell den richtigen Korb zu finden, und dann wird Equals für einen genauen Vergleich aufgerufen.

Wichtig ist, dass:

  • Wenn zwei Objekte gleich sind (Equals gibt true zurück), dann sollten ihre GetHashCode denselben Wert zurückgeben.
  • Gut verteilte Hash-Codes verringern Kollisionen und verbessern die Leistung.

Beispiel für Überschreibung:

public 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);
    }
}