Sobes.tech
Junior — Middle

Jaké kroky je třeba podniknout, aby bylo možné použít vlastní třídu jako klíč v kolekci typu slovník?

sobes.tech AI

Odpověď od AI

Chcete-li použít vlastní třídu jako klíč v slovníku (Dictionary<TKey, TValue>) v C#, je třeba zajistit správné porovnání klíčů a výpočet jejich hash kódů. K tomu je nutné:

  1. Přepsat metodu Equals(object obj), aby správně porovnávala objekty vaší třídy podle významných polí.
  2. Přepsat metodu GetHashCode(), aby objekty považované za stejné měly stejný hash kód.

Příklad:

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

Alternativně lze implementovat rozhraní IEqualityComparer<T> a předat jej do konstruktoru slovníku, pokud nechcete měnit samotnou třídu.