© best_vector/Shutterstock.com
Kolumne: .NETversum

Kolumne: .NETversum


Motivation: Null-conditional Operator in C# 6.0 und Visual Basic 14

Die NullReferenceException [1] gehört sicherlich zu den häufigsten Laufzeitfehlern, die man als Entwickler in .NET sieht – und fast immer ist man dafür selbst verantwortlich. So zu programmieren, kann man als „naiv“ bezeichnen: var name0 = repository.GetKunde(1).Name.ToUpper(); Denn in diesem Fall könnte

  • die Variable repository den Wert null haben und/oder

  • die Methode GetKunde() könnte null liefern und/oder

  • die Zeichenketteneigenschaft Name könnte null enthalten

Robuster programmiert, sieht der Programmcode so aus:

string name1 = ""; if (repository != null) { var kunde = repository.GetKunde(1); if (kunde != null) { if (kunde.Name != null) { name1 = kunde.Name.ToUpper(); } } }

Alle drei oben genannten Fehlerfälle sind damit abgefangen. Der Programmcode ist aber nun deutlich länger geworden.

Etwas prägnanter kann man unter Einsatz der Operatoren ? und ?? den Programmcode so schreiben:

string name2 = ""; if (repository != null) { var kunde = repository.GetKunde(1); name2 = (((kunde == null) ? "" : kunde.Name) ?? "").ToUpper(); }

Ein Tipp dazu: Der Operator ?? (Null-coalescing Operator) wurde in C# 2.0 (im Jahr 2005) eingeführt. Er besteht aus zwei Operanden.

Wenn der linke Operand nicht den Wert null hat, ist das Ergebnis der Operation der Wert des linken Operanden. Wenn der linke Operand den Wert null hat, ist das Ergebnis der Operation der Wert des rechten Operanden.

Wartecursor in WPF-Fenstern anzeigen

Windows kennt verschiedene Cursortypen: verschiedene Grafiken, die als Windows-Cursor angezeigt werden, abhängig von der aktuellen Situation. Ein Wartecursor zeigt an, dass der Benutzer aktuell auf das Beenden einer Aktion warten muss und eigentlich keine anderen Aktionen ausführen soll.

Dennoch kann der Benutzer auch noch beim Wartecursor mit dem Cursor die Oberfläche bedienen. Microsoft bezeichnet den Wartecursor auch aus historischen Gründen noch als „Hourglass“ (Sanduhr), auch wenn er in neueren Windows-Versionen nicht mehr als Sanduhr grafisch dargestellt wird (Abb. 1 und 2).

schwichtenberg_1.tif_fmt1.jpgAbb. 1: Der normale Cursor (hier in Windows 10)
schwichtenberg_2.tif_fmt1.jpgAbb. 2: Der Wartecursor (ebenfalls Windows 10)

In einem WPF-Fenster setzt man den Cursor für das Fenster ganz einfach über this.Cursor = System.Windows.Input.Cursors.Wait;

Die Enumeration System.Windows.Input.Cursors bietet den Zugriff auf eine Reihe von Standardcursorgrafiken [2].

Die Änderung der Cursordarstellung und die Rückänderung auf die vorherige Cursord...

Exklusives Abo-Special

Angebote für Teams

Für Firmen haben wir individuelle Teamlizenzen. Wir erstellen Ihnen gerne ein passendes Angebot.

Das Library-Modell:
IP-Zugang

Das Company-Modell:
Domain-Zugang