Sobes.tech
Junior — Middle

Jak se lze vyhnout omezení velikosti nebo omezení při použití klíče ve slovníku?

sobes.tech AI

Odpověď od AI

V C#, slovníky (Dictionary<TKey, TValue>) mají omezení na typy klíčů a jejich velikost, například klíč musí být hashovatelný a mít správně implementované metody GetHashCode a Equals.

Chcete-li se vyhnout omezením velikosti nebo typu klíče, můžete:

  • Použít složené klíče, například vytvořit třídu nebo strukturu, která kombinuje několik hodnot, a pro ni správně implementovat metody GetHashCode a Equals.
  • Převést velké nebo složité klíče na kompaktnější reprezentace, například serializovat objekt do řetězce nebo použít hashovací funkci.
  • Použít specializované kolekce nebo datové struktury, pokud standardní slovník není vhodný.

Příklad složeného klíče:

struct CompositeKey
{
    public int Id;
    public string Name;

    public override bool Equals(object obj) => obj is CompositeKey other && Id == other.Id && Name == other.Name;
    public override int GetHashCode() => HashCode.Combine(Id, Name);
}

var dict = new Dictionary<CompositeKey, string>();
dict[new CompositeKey { Id = 1, Name = "Test" }] = "Value";