Sobes.tech
Junior — Middle

Kako izbeći ograničenje veličine ili ograničenje pri korišćenju ključa u rečniku?

sobes.tech АИ

Одговор од АИ

U C# slovarima (Dictionary<TKey, TValue>) postoje ograničenja na tipove ključeva i njihovu veličinu, na primer, ključ mora biti hashabilan i imati pravilno implementirane metode GetHashCode i Equals.

Da biste izbegli ograničenja u veličini ili tipu ključa, možete:

  • Koristiti složene ključeve, na primer, kreirati klasu ili strukturu koja kombinuje više vrednosti i za nju implementirati ispravne metode GetHashCode i Equals.
  • Pretvoriti velike ili složene ključeve u kompaktije prikaze, na primer, serijalizovati objekat u niz ili koristiti hash funkciju.
  • Koristiti specijalizovane kolekcije ili strukture podataka ako standardni slovar nije prikladan.

Primer složenog ključa:

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";