VB.NET IF Nothing not IsNothing

Da macht man etwas Tag ein Tag aus, weil es nicht besser weis. Tausendmal findet sich in meinem Code eine doppelte Prüfung auf nothing und eine Objekteigenschaft. Man öffnet eine Ressource und es könnte nichts zurückkommen.

Noch die schönere Lösung ist dabei eine Andalso Verknüpfung die nach dem ersten falsch ausgewerteten Ausdruck abbricht.

   1:  Dim liste As List(Of String)
   2:  ...
   3:  If Not liste Is Nothing AndAlso liste.Count > 1 Then

In der Praxis wird man häufig tief verschachtelte IF Statements finden.

Relativ neu sind Nullable Datatypes in VB.NET. Versehen mit einem Fragezeichen lässt sich nothing direkt zuweisen

   1:  Dim ding As Boolean?

 

Jedenfalls lässt sich obige Zeile 3 nun mit identer Funktion aber wesentlich kürzerer Syntax im IF verwenden ohne eine Exception zu erhalten, wenn das Objekt nothing ist. Dies sind die Null Bedingungen Operatoren oder Null-Conditional

   1:   If liste?.Count > 1 Then

Das klappt aber nicht nur mit Eigenschaften oder Funktionen, sondern auch mit Index eines Arrays, wenn dieses kein oder zu wenig Einträge enthält.

   1:  Dim count as Integer? = 
customers?[0]?.Orders?.Count()
Kommentare sind geschlossen