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