What does the two question marks together (??) mean in C#?

CsharpServer Side ProgrammingProgramming

It is the null-coalescing operator. The null-coalescing operator ?? returns the value of its left-hand operand if it isn't null; otherwise, it evaluates the right-hand operand and returns its result. The ?? operator doesn't evaluate its right-hand operand if the lefthand operand evaluates to non-null.

A nullable type can represent a value that can be undefined or from the type's domain. We can use the ?? operator to return an appropriate value when the left operand has a nullable type. If we try to assign a nullable value type to a non-nullable value type without using the ?? operator, we will get a compile-time error and if we forcefully cast it, an InvalidOperationException exception will be thrown.

The following are the advantages of the Null-Coalescing Operator (??) operator −

  • It is used to define a default value for a nullable item (for both value types and reference types).

  • It prevents the runtime InvalidOperationException exception.

  • It helps us to remove many redundant "if" conditions.

  • It works for both reference types and value types.

  • The code becomes well-organized and readable.


 Live Demo

using System;
namespace MyApplication{
   class Program{
      static void Main(string[] args){
         int? value1 = null;
         int value2 = value1 ?? 99;
         Console.WriteLine("Value2: " + value2);
         string testString = "Null Coalescing";
         string resultString = testString ?? "Original string is null";
         Console.WriteLine("The value of result message is: " + resultString);


The output of the above example is as follows.

Value2: 99
The value of result message is: Null Coalescing
Updated on 04-Aug-2020 06:37:56