Sobes.tech
Junior — Middle

Wie kann man die Größenbeschränkung oder Einschränkung bei der Verwendung eines Schlüssels in einem Wörterbuch vermeiden?

sobes.tech KI

Antwort von AI

In C# haben Wörterbücher (Dictionary<TKey, TValue>) Einschränkungen bei den Schlüsseltypen und deren Größe, zum Beispiel muss der Schlüssel hashbar sein und korrekt implementierte Methoden GetHashCode und Equals besitzen.

Um Größen- oder Typbeschränkungen bei Schlüsseln zu vermeiden, kann man:

  • Zusammengesetzte Schlüssel verwenden, z.B. eine Klasse oder Struktur erstellen, die mehrere Werte kombiniert, und für diese korrekte GetHashCode- und Equals-Methoden implementieren.
  • Große oder komplexe Schlüssel in kompaktere Darstellungen umwandeln, z.B. das Objekt serialisieren oder eine Hash-Funktion verwenden.
  • Spezialisierte Sammlungen oder Datenstrukturen nutzen, wenn das Standardwörterbuch nicht geeignet ist.

Beispiel für einen zusammengesetzten Schlüssel:

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