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.