Wie teste ich ein generisches Wörterbuchobjekt, um festzustellen, ob es leer ist? Ich möchte einen Code wie folgt ausführen:
%Vor%Das Objekt reportGraph ist vom Typ System.Collections.Generic.Dictionary Wenn Sie diesen Code ausführen, ist das reportGraphs-Wörterbuch leer und MoveNext () gibt sofort eine NullReferenceException aus. Ich möchte keinen Try-Catch um den Block setzen, wenn es eine performantere Art gibt, mit der leeren Sammlung umzugehen.
Danke.
Wenn es ein allgemeines Wörterbuch ist, können Sie einfach Dictionary.Count . Count ist 0, wenn es leer ist.
In Ihrem Fall sieht reportGraphs
jedoch wie ein IEnumerator<T>
aus - gibt es einen Grund, Ihre Sammlung manuell aufzulisten?
Es besteht ein Unterschied zwischen einem empty
dictionary und null
. Das Aufrufen von MoveNext
für eine leere Sammlung führt nicht zu einem NullReferenceException
. Ich denke, in Ihrem Fall könnten Sie testen, ob reportGraphs != null
.
Wie Darin gesagt hat, ist reportGraphs
null
, wenn es eine NullReferenceException
wirft. Der beste Weg wäre sicherzustellen, dass es niemals null ist (d. H. Sicherstellen, dass es im Konstruktor Ihrer Klasse initialisiert wird).
Eine andere Möglichkeit, dies zu tun (um eine explizite Aufzählung zu vermeiden), wäre die Verwendung einer foreach
-Anweisung:
[Bearbeiten] Beachten Sie, dass in diesem Beispiel auch angenommen wird, dass reportGraphs
niemals null
ist.
Tags und Links c# generics collections nullreferenceexception