"Verbose Dictionary" in C #, 'override new' dies [] oder IDictionary implementieren

8

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:

%Vor%

Ist das der richtige / einzige Weg? Wäre es wirklich so schlimm, über das [[] neu zu lernen?

    
Benjol 27.04.2010, 05:33
quelle

3 Antworten

10

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:

%Vor%     
Marc Gravell 27.04.2010, 06:01
quelle
3

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.

    
Stewart 27.04.2010 05:38
quelle
1

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?

    
Mitchel Sellers 27.04.2010 05:36
quelle

Tags und Links