Ist eine NULL-Prüfung für ein IEnumerable-Objekt erforderlich?

8
%Vor%

Muss ich für die Variable selectedRows nach eine Null setzen? selectedRows ist eine IEnumerable-Variable.

    
Tanya 05.05.2011, 05:48
quelle

5 Antworten

15

Sie müssen nicht überprüfen, ob selectedRows null ist. Die zurückgegebene IEnumerable<> ist möglicherweise leer, aber niemals null .

Abgesehen davon würde ich vorschlagen, dass Sie Ihren Code vereinfachen, indem Sie schreiben:

%Vor%

Was kürzer und gleichwertig ist.

    
Frédéric Hamidi 05.05.2011, 05:53
quelle
5

Die LINQ-Abfrage gibt eine leere Liste (0 Elemente) zurück, wenn keine Übereinstimmungen für die Wo gefunden wurden.

Sie müssen also nicht nach null suchen.

    
Oded 05.05.2011 05:52
quelle
2

Mein anfängliches Gefühl ist nein, das tust du nicht, aber es kann sicherlich nicht schaden.

Ich habe, glaube ich, Phil Haack, eine nützliche Erweiterungsmethode, die prüft, ob IEnumerable null oder leer ist ...

%Vor%

.Any() ist viel effizienter für die Überprüfung, wenn nicht leer als .Count()

    
Alastair Pitts 05.05.2011 05:53
quelle
1

Linq wird NULL nicht zurückholen. Wenn Sie überprüfen möchten, ob einige Daten vorhanden sind, können Sie Any ()

verwenden %Vor%     
anishMarokey 05.05.2011 05:57
quelle
1

In Ihrem Beispiel werden Sie die Erweiterungsmethode verwenden. Wenn Sie jedoch Ihre eigene Methode implementieren, die ein IEnumerable zurückgibt, hängt die Antwort davon ab, wie Sie Ihr Ergebnis zurückgeben.

Die folgende Methode gibt ein leeres Aufzählungszeichen zurück:

%Vor%

Die folgende Methode gibt nur null zurück:

%Vor%

Der Aufruf dieser Methoden führt zu folgenden Ergebnissen:

%Vor%

Seien Sie also vorsichtig, wenn Sie IEnumerable zurückgeben. Versuchen Sie, das Schlüsselwort yield zu verwenden und dem richtigen Muster zu folgen.

    
mikesigs 02.03.2014 05:30
quelle

Tags und Links