Man lernt wirklich nie aus. Da existiert dieser Schlingel schon seit .Net 2.0 und erst jetzt entdecke ich den nützlichen „??“ Operator (Null Coalesce Operator) in C Sharp.
Um immer einen Defaultwert zu haben (z.B. wenn das Objekt aus einer Datenbank kommt), kann man statt:
[code language=csharp]
myobject = whatever.GetMyObject(x);
if(myobject == null) myobject = new MyObject();
[/code]
auch:
[code language=csharp]
myobject = whatever.GetMyObject(x) ?? new MyObject();
[/code]
schreiben.
Der Operator sorgt quasi dafür, dass das erste Nicht-Null-Objekt zurückgegeben wird. Gut zu wissen :-)
Siehe auch: MSDN Artikel dazu
Kommentare
4 Antworten zu „?? Operator in C Sharp (C#)“
Hättest du mich mal gefragt … :D
Wie soll man überhaupt irgendwen nach so etwas fragen? Es spart wie so vieles in .Net genau eine Zeile Schreibarbeit … nett, aber nicht nötig. Darauf kommt man doch wirklich nur, wenn man den Code von Frischlingen anschaut ;-)
Eigentlich ist der Operator ja dafür nicht gedacht, sondern für die Verwendung von Nullable.
Also:
[code]
// int? entspricht Nullable
int? someInt = Database.GetIntThatCouldBeNull();
// Wert von someInt oder, wenn someInt == null den Wert -1
int i = someInt ?? -1;
[/code]
Naja, aber Objekte können auch null sein, deshalb ziemlich praktisch in jeder Situation.