Junior — Middle
Come si può evitare la limitazione di dimensione o restrizione nell'uso di una chiave in un dizionario?
sobes.tech AI
Risposta dell'AI
In C#, i dizionari (Dictionary<TKey, TValue>) hanno restrizioni sui tipi di chiavi e sulla loro dimensione, ad esempio, la chiave deve essere hashabile e avere metodi GetHashCode e Equals correttamente implementati.
Per evitare restrizioni di dimensione o tipo di chiave, puoi:
- Utilizzare chiavi composte, ad esempio, creare una classe o struttura che combina più valori e implementare per essa metodi
GetHashCodeeEqualscorretti. - Trasformare chiavi grandi o complesse in rappresentazioni più compatte, ad esempio, serializzare l'oggetto in una stringa o usare una funzione hash.
- Utilizzare collezioni o strutture dati specializzate se il dizionario standard non è adatto.
Esempio di chiave composta:
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";