Junior — Middle
Care este rolul metodei GetHashCode atunci când utilizați un dicționar sau o colecție hash?
sobes.tech AI
Răspuns de la AI
Metoda GetHashCode joacă un rol cheie în utilizarea dicționarelor (Dictionary) și a altor colecții hash în C#. Aceasta returnează o valoare întreagă (cod hash) utilizată pentru a determina rapid poziția unui obiect în tabelul hash.
Când adăugați un obiect într-un dicționar, mai întâi se apelează GetHashCode pentru a determina coșul (bucket) în care va fi plasat elementul. La căutarea unui element după cheie, se calculează mai întâi codul hash pentru a găsi rapid coșul potrivit, apoi se apelează Equals pentru o comparație exactă.
Este important ca:
- Dacă două obiecte sunt egale (Equals returnează true), atunci valorile lor GetHashCode trebuie să fie aceleași.
- Codurile hash bine distribuite reduc numărul de coliziuni și cresc performanța.
Exemplu de suprascriere:
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);
}
}