Sobes.tech
Junior — Middle

Ce pași trebuie urmați pentru a utiliza o clasă proprie ca cheie într-o colecție de tip dicționar?

sobes.tech AI

Răspuns de la AI

Pentru a utiliza o clasă personalizată ca cheie într-un dicționar (Dictionary<TKey, TValue>) în C#, trebuie să asigurați o comparație corectă a cheilor și calculul codurilor lor hash. Pentru aceasta, trebuie:

  1. Să suprascrieți metoda Equals(object obj) astfel încât să compare corect obiectele clasei dvs. pe baza câmpurilor semnificative.
  2. Să suprascrieți metoda GetHashCode() astfel încât obiectele considerate egale să aibă același cod hash.

Exemplu:

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

Alternativ, puteți implementa interfața IEqualityComparer<T> și să o transmiteți constructorului dicționarului dacă nu doriți să modificați clasa în sine.