Sobes.tech
Junior — Middle

Hoe kunt u beperkingen qua grootte of beperkingen bij het gebruik van een sleutel in een woordenboek vermijden?

sobes.tech AI

Antwoord van AI

In C# hebben woordenboeken (Dictionary<TKey, TValue>) beperkingen op de typen en de grootte van sleutels, bijvoorbeeld dat de sleutel hashbaar moet zijn en correct geïmplementeerde GetHashCode en Equals methoden moet hebben.

Om beperkingen qua grootte of type van de sleutel te vermijden, kun je:

  • Samengestelde sleutels gebruiken, bijvoorbeeld door een klasse of structuur te maken die meerdere waarden combineert en voor deze correcte GetHashCode en Equals methoden te implementeren.
  • Grote of complexe sleutels omzetten naar compactere representaties, bijvoorbeeld door het object te serialiseren naar een string of een hashfunctie te gebruiken.
  • Gespecialiseerde collecties of datastructuren gebruiken als de standaardwoordenboek niet geschikt is.

Voorbeeld van een samengestelde sleutel:

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