Alles, was ich will, ist ein Wörterbuch, das mir sagt, welchen Schlüssel es nicht finden konnte, anstatt nur The given key was not present in the dictionary
zu sagen.
Ich habe kurz überlegt, eine Unterklasse mit override new this[TKey key]
zu erstellen, aber ich fand es ein bisschen hacky, also habe ich die IDictionary-Schnittstelle implementiert und alles direkt an ein inneres Wörterbuch weitergeleitet, mit der einzigen zusätzlichen Logik, die drin ist der Indexer:
Ist das der richtige / einzige Weg? Wäre es wirklich so schlimm, über das [[] neu zu lernen?
Klingt wie eine gute Ergänzung für eine Erweiterungsmethode:
%Vor% Dies funktioniert dann bei allen vorhandenen Wörterbüchern, wenn Sie VerboseGetValue
aufrufen, zum Beispiel:
Anstatt ContainsKey zu tun und nach dem Vorhandensein des Schlüssels zu suchen, bevor Sie das zugrundeliegende Wörterbuch berühren, warum nicht
%Vor%Auf diese Weise zahlen Sie nur für die zusätzliche Überprüfung im Fehlerfall - der Erfolgsfall, der hoffentlich häufiger ist, muss nicht eine zusätzliche Wörterbuchsuche durchführen. Das ist gut für get, aber set ist schwieriger, da das Standardverhalten von set immer funktioniert. Wenn Sie das nicht möchten, müssen Sie zuerst prüfen, ob der Schlüssel vorhanden ist.
Wenn Sie dies tun wollen, müssen Sie sich selbst auf die eine oder andere Weise rollen. Aber ich werde fragen, WARUM du das tun würdest?
Tags und Links c# dictionary coding-style