Nehmen wir an, ich habe eine Methode wie folgt:
%Vor%Aber der obige Code hat zwei Suchvorgänge im Wörterbuch:
Gibt es einen optimaleren Weg, eine solche Funktion zu formulieren, so dass nur eine Suche durchgeführt wird, aber der Fall "nicht gefunden" noch immer über eine Nullrückgabe behandelt wird (d. h. nicht über eine nicht gefundene Ausnahme)?
Es wäre zum Beispiel schön gewesen, wenn die Suche nach dem Schlüssel eine Art Iterator zurückgegeben hätte, der zum Abrufen des Werts oder eines ungültigen Iterators verwendet werden könnte, wenn der Wert nicht wie in C ++ gefunden wurde. Vielleicht hat C # aufgrund seiner Sprachmerkmale einen besseren Weg dazu.
Die Methode TryGetValue
wurde für genau dieses Szenario entwickelt - um die beiden Nachschlagevorgänge zu vermeiden Operationen.
%Vor%Diese Methode kombiniert die Funktionalität der ContainsKey-Methode und die Item-Eigenschaft.
Wenn der Schlüssel nicht gefunden wird, erhält der value-Parameter das passende Standardwert für den Werttyp TValue.
[...] Verwenden Sie die TryGetValue-Methode, wenn Ihr Code häufig versucht, darauf zuzugreifen Schlüssel, die nicht im Wörterbuch enthalten sind. Mit dieser Methode ist mehr effizienter als das Abfangen der KeyNotFoundException, die vom Element ausgelöst wird Eigenschaft.
Sie sollten stattdessen TryGetValue
verwenden - es wird eine einzelne Suche verwendet.
Der Aufruf ist kurz genug, um "inline" zu verwenden, ohne eine Wrapper-Funktion hinzuzufügen. TryGetValue
gibt eine bool
zurück, die angibt, ob die Suche erfolgreich war oder nicht.