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șiEqualscorecte. - 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";