To my knowledge perhaps the least used operator in C# is the null-coalescing operator .
But you can use it effectively to reduce the lines of code you write .
The null-coalesce operator can be used to define / return a default value for a nullable value type / reference type and this is represented by two consecutive question marks (??).
Here is how you can use it :
Ex. 1 : Assign default value to Value type // define a nullable int int? x = null; // assign a value to another integer, but check if it contains null value // if a null is there, assign a default value int y = x ?? -1;
Ex. 2 : Passing as parameter
public class MyClass { // define members here } public class TestClass { public void VerifyObject(MyClass myClassObject) { if (myClassObject == null) { // display error message } else { // do something } } public void Test() { MyClass myClassObject1 = null; MyClass myClassObject2 = new MyClass(); VerifyObject(myClassObject1 ?? myClassObject2); } }
Ex. 3 : Create new Object
MyClass myClassObject1 = null; /* instead of writing - if (myClassObject1 != null) { myClassObject2 = myClassObject1; } else { myClassObject2 = new MyClass(); } Write in a single statement */ MyClass myClassObject2 = myClassObject1 ?? new MyClass();
Ex. 4 : Return value from function
/* instead of writing - if (myClassObject1 != null) return myClassObject1; if (myClassObject2 != null) return myClassObject2; return null; Write in a single statement */
return myClassObject1 ?? myClassObject2
As the above examples show using null-coalescing operator can help us reduce the lines of code significantly.