Sobes.tech
Junior — Middle

Ce metode pot fi folosite pentru a evita restricțiile de dimensiune sau restricțiile la utilizarea unei chei într-un dicționar?

sobes.tech AI

Răspuns de la AI

În C#, dictionarele (Dictionary<TKey, TValue>) au restricții privind tipurile de chei și dimensiunea acestora, de exemplu, cheia trebuie să fie hashabilă și să aibă metode GetHashCode și Equals implementate corect.

Pentru a evita restricțiile legate de dimensiune sau tipul cheii, se pot:

  • Utiliza chei compuse, de exemplu, creând o clasă sau structură care combină mai multe valori și implementând pentru ea metodele GetHashCode și Equals corecte.
  • Converti cheile mari sau complexe în reprezentări mai compacte, de exemplu, serializând obiectul într-un șir de caractere sau folosind o funcție hash.
  • Utiliza colecții sau structuri de date specializate dacă dictionarul standard nu este potrivit.

Exemplu de cheie compusă:

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