Null-Coalescing Operator in C#
Last Updated :
11 Dec, 2019
In C#, ?? operator is known as Null-coalescing operator. It will return the value of its left-hand operand if it is not null. If it is null, then it will evaluate the right-hand operand and returns its result. Or if the left-hand operand evaluates to non-null, then it does not evaluate its right-hand operand.
Syntax:
p ?? q
Here, p is the left and q is the right operand of ?? operator. The value of p can be nullable type, but the value of q must be non-nullable type. If the value of p is null, then it returns the value of q. Otherwise, it will return the value of p.
Important Points:
- The ?? operator is used to check null values and you can also assign a default value to a variable whose value is null(or nullable type).
- You are not allowed to overload ?? operator.
- It is right-associative.
- In ?? operator, you can use throw expression as a right-hand operand of ?? operator which makes your code more concise.
- You are allowed to use ?? operator with value types and reference types.
Example:
using System;
namespace example {
class Program {
static void Main( string [] args)
{
string item_1 = null ;
string item_2 = "GeeksforGeeks" ;
string item_3 = "GFG" ;
string item_4 = item_1 ?? item_2;
item_3 = item_4 ?? item_2;
Console.WriteLine( "Value of item_4 is: {0} \n" +
"Value of item_3 is: {1}" , item_4, item_3);
int ? item_5 = null ;
Program obj = new Program();
int ? item_6 = item_5 ?? obj.Add(10, 30);
Console.WriteLine( "Value of item_6 is: {0}" , item_6);
}
public int Add( int a, int b)
{
int result = a + b;
return result;
}
}
}
|
Output:
Value of item_4 is: GeeksforGeeks
Value of item_3 is: GeeksforGeeks
Value of item_6 is: 40
- With the help of ?? operator you can prevent InvalidOperationException.
Example:
using System;
namespace example {
class GFG {
static void Main( string [] args)
{
int ? item_1 = null ;
int ? item_2 = item_1 ?? 100;
Console.WriteLine( "Value of item_1 is: {0}" , item_1);
Console.WriteLine( "Value of item_2 is: {0}" , item_2);
}
}
}
|
Output:
Value of item_1 is:
Value of item_2 is: 100
- With the help of ?? operator you can remove many redundant “if-else” conditions and make your code compact and readable.
Example:
using System;
namespace example {
class GFG {
static void Main( string [] args)
{
int ? item_1 = null ;
int ? item_2;
if (item_1.HasValue) {
item_2 = item_1;
}
else {
item_2 = 200;
}
Console.WriteLine( "Value of item_1 is: {0}" , item_1);
Console.WriteLine( "Value of item_2 is: {0}" , item_2);
}
}
}
|
Output:
Value of item_1 is:
Value of item_2 is: 200
using System;
namespace example {
class GFG {
static void Main( string [] args)
{
int ? item_1 = null ;
int ? item_2 = item_1 ?? 200;
Console.WriteLine( "Value of item_1 is: {0}" , item_1);
Console.WriteLine( "Value of item_2 is: {0}" , item_2);
}
}
}
|
Output:
Value of item_1 is:
Value of item_2 is: 200
- ?? operator can be nested. It will make your code more readable and also reduce multiple if-else conditions.
Example:
using System;
namespace example {
class GFG {
static void Main( string [] args)
{
int ? item_1 = null ;
int ? item_2 = null ;
int ? item_3 = 500;
int ? item_4 = item_1 ?? item_2 ?? item_3;
Console.WriteLine( "Value of item_4 is: {0} " , item_4);
}
}
}
|
Output:
Value of item_4 is: 500
Like Article
Suggest improvement
Share your thoughts in the comments
Please Login to comment...