The null-coalescing assignment operator ??=
in C# 8.0 evaluates its right-hand operand and assigns its value to the left-hand operand if the left-hand operand is null. If the left-hand operand is not null, the right-hand operand remains unevaluated.
The value of the right-hand operand b
is assigned to the left-hand operand a
if a
evaluates to null.
??=
operator must be one of the following:The left-hand operand of the ??=
operator must not be a non-nullable type.
It is not possible to overload the null-coalescing assignment operator.
The null-coalescing operator is right-associative. This means that an expression such as a ??= b ??= c
will be evaluated as a ??= (b ??= c)
.
The following examples demonstrate how to use the ??=
operator:
using System;namespace Example{class Program{static void Main(string[] args){// Example 1// create a null variablestring var1 = null;string var2 = "Eductaive.io";// assign var1 to var3 using ??=string var3 = var1 ??= var2;//display var3Console.WriteLine("Value of var3 is: ");Console.WriteLine(var3);// Example 2// create nullable value typeint ? var4 = null;int var5 = var4 ??= 10;Console.WriteLine("Value of var5 is: ");Console.WriteLine(var5);// Example 3// condense if else statementint ? var6 = null;int a = 5;if ( var6 is null){var6 = a;}Console.WriteLine("Value of var6 is: ");Console.WriteLine(var6);int ? var7 = null;var7 ??= 10;Console.WriteLine("Value of var7 is: ");Console.WriteLine(var7);}}}
Value of var3 is:
Eductaive.io
Value of var5 is:
10
Value of var6 is:
5
Value of var7 is:
10
The program creates a null string var1
and a string var2
containing “Educative.io”. var1
is assigned to the string var3
, and if var1
is null, var2
is indirectly assigned to var3
. Since the null-coalescing operator is right-associative, var2
is first assigned to var1
, then to var3
.
The program uses a nullable value type to create the variable var4
and a value type to create the variable var5
. Since value type variables cannot take on a null value, the expression in line 21 first sets var4
to 10, then assigns it to var5
.
Example 3 demonstrates how to condense conditional blocks using the ??=
operator. The program first implements the code using a conditional statement to check if var6
is null, and assigns it a number if it is null. The program then executes the same functionality in a single line using the ??=
operator.