Wie beeinflusst die Methode GetHashCode die Arbeit des Wörterbuchs in .NET?
sobes.tech KI
Antwort von AI
Die Methode GetHashCode in .NET wird verwendet, um den Hash-Code eines Objekts zu erhalten, der in Hashtabellen verwendet wird, beispielsweise in Dictionaries (Dictionary<TKey, TValue>).
Wenn Sie ein Objekt zu einem Dictionary hinzufügen, wird zuerst GetHashCode aufgerufen, um die Bucket zu bestimmen, in der es gespeichert wird. Bei der Objektsuche verwendet das Dictionary den Hash-Code für einen schnellen Zugriff.
Es ist wichtig, dass:
- Wenn zwei Objekte gleich sind (nach der Methode
Equals), ihre Hash-Codes übereinstimmen. - Wenn die Hash-Codes unterschiedlich sind, gelten die Objekte als verschieden.
Eine falsche Implementierung von GetHashCode kann dazu führen, dass das Dictionary den Schlüssel nicht finden kann, selbst wenn er vorhanden ist, oder die Leistung durch eine große Anzahl von Kollisionen verringert wird.
Beispiel für eine korrekte Implementierung:
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);
}
}
Auf diese Weise beeinflusst GetHashCode die Korrektheit und Effizienz der Arbeit des Wörterbuchs.