Neu in C# 6 – Die Operatoren Null-Condentional und Null-Coalescing

 

In diesem kurzen Artikel möchte ich die Verwendung der in C# 6 neu hinzugekommenen Operatoren Null-Condentional (?.) und Null-Coalescing (??) demonstrieren. Die beiden neuen Operatoren sind kein Allheilmittel zur Durchführung von Prüfungen auf null-Werte. Jedoch ermöglichen diese eine kompaktere Schreibweise und damit die Reduzierung von zu schreibendem Code.

Im nachfolgenden ein Beispiel, wie man es in etwa bisher getan hat (und natürlich auch weiterhin tun kann)

string[] a = { „Hallo“, „Welt“, null, „!“ };
foreach(string s in a)
{
     if(s != null)
         
Console.WriteLine(s.ToUpper());
}

Mit dem Null-Conditional Operator lässt sich der Code auch so schreiben

string[] a = { „Hallo“, „Welt“, null, „!“ };
foreach(string s in a)
{
     Console.WriteLine(s?.ToUpper());
}

Der Null-Codential Operator kann überall dort eingesetzt werden, wo ein null-Wert zurückgeliefert werden kann. In obigem Beispiel wird mit ?. s auf null überprüft. Ist s != null, wird die Methode ToUpper() aufgerufen. Ist s == null, entfällt der Aufruf der Methode, aber es wird keine Exception ausgelöst.

Eine weitere Möglichkeit ist die Verwendung des Operators ?? (Null-Coalescing Operator). Das nachfolgende Beispiel funktioniert für s.? genauso wie oben erklärt. Allerdings wird aufgrund der Verwendung des Null-Coalescing Operators der String „null!!!“ zurückgeliefert, wenn s == null ist.

string[] a = { „Hallo“, „Welt“, null, „!“ };
foreach(string s in a)
{
     Console.WriteLine(s?.ToUpper() ?? „null!!!“);
}

Ohne Null-Condential und Null-Coalescing Operator wäre der Code auch hier etwas umfangreicher

string[] a = { „Hallo“, „Welt“, null, „!“ };
foreach(string s in a)
{
     if(s != null)
          Console.WriteLine(s.ToUpper());
    
else
         
Console.WriteLine(„null!!!“);
}

Der Null-Coalescing Operator kann auch separat verwendet werden. Auch in diesem Beispiel wird die Zeichenkette „null!!!“ zurückgeliefert, wenn s == null ist. Vereinfacht kann man sagen, dass der linke Operand zurückgeben wird, wenn es sich nicht um einen null-Wert handelt, ansonsten wird der rechte Operand zurückgeliefert.

string[] a = { „Hallo“, „Welt“, null, „!“ };
foreach(string s in a)
{
     Console.WriteLine(s ?? „null!!!“);
}

 

Hinterlasse einen Kommentar