DEV Community

loading...

Null Coalescing Operator in C#

Ishaan Sheikh
Software Engineer with a passion for building things 💻🤓
Originally published at frikishaan.com ・1 min read

If you have used javascript before you probably have used the logical OR (||) operator while assigning values to a variable. For example,

let a = b || c;
Enter fullscreen mode Exit fullscreen mode

The above code snippet assigns the value of b to a if it is defined, else assign c to it.

In C# the ?? operator is used to handle this kind of situations.
This operator us available in C# 8.0 and later.

Syntax

a = b ?? c;
Enter fullscreen mode Exit fullscreen mode

The above statement will be equivalent to

if(b == null)
{
   a = c
}
else
{
    a = b
}
Enter fullscreen mode Exit fullscreen mode

Examples

Below are some use-cases for ?? operator.

1. Throwing an exception

int? val = input ?? throw new Exception("'input' cannot be null");
Enter fullscreen mode Exit fullscreen mode

2. Assigning a default value

int? requiredValue = userInput ?? -1;
Enter fullscreen mode Exit fullscreen mode

3. This operator can also be Nested

int? a = 1;
int? b = null;
int? c = 3;

int? d = a ?? b ?? c;

Console.Write(d); // 1
Enter fullscreen mode Exit fullscreen mode

This operator is right-associative, so the above example will evaluated as

a ?? (b ?? c)
a ?? (null ?? 3)
a ?? 3
1 ?? 3
1
Enter fullscreen mode Exit fullscreen mode

Discussion (0)