How to use the null-coalescing assignment operator in C#
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.
Syntax
The value of the right-hand operand b is assigned to the left-hand operand a if a evaluates to null.
Key points about the null-coalescing assignment operator
- The left-hand operand of the
??=operator must be one of the following:
- a variable
- a property
- an indexer element
-
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 ??= cwill be evaluated asa ??= (b ??= c).
Examples
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);}}}
Output
Value of var3 is:
Eductaive.io
Value of var5 is:
10
Value of var6 is:
5
Value of var7 is:
10
Example 1
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.
Example 2
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
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.
Free Resources