Null Coalescing Operator (??) in C# Explained

The null coalescing operator (??) in C# is a binary operator that simplifies the handling of null values. Here’s how it works.

Written by Nick Remeslennikov
Published on May. 12, 2025
developer writing C# code with multiple monitors
Image: Shutterstock / Built In
Brand Studio Logo

The C# null coalescing operator (??) is a versatile operator that simplifies the handling of null values in C# code. It provides a concise way to specify a default value when a nullable variable is null, allowing you to write more concise and readable code.

Null Coalescing Operator (??) in C#

The null coalescing operator (??) in c# provides a concise way to handle null values in c# code. It is a binary operator, returning the left-hand operand if it isn’t null and the right-hand operand when it is. The syntax is as follows:

leftOperand ?? rightOperand

 

Null Coalescing Operator (??) Syntax

The null coalescing operator (??) is a binary operator in C# that returns the left-hand operand if it isn’t null; otherwise, it returns the right-hand operand.

leftOperand ?? rightOperand

More on C#Object Reference Not Set to an Instance of an Object Solved in C#

 

How Does the Null Coalescing Operator (??) Work?

To understand the null coalescing operator, let’s start with a simple scenario. Consider a variable called "name" that can either hold a string value or be null. If "name" is null, we want to assign a default value of "Anonymous" to it. Traditionally, we would use an if-else statement to achieve this:

string name = GetNameFromSomeSource(); // Assume this can return null

if (name == null)
{
    name = "Anonymous";
}

With the null coalescing operator (??), we can achieve the same result in a more concise way:

string name = GetNameFromSomeSource() ?? "Anonymous"

In the above code, the "?? " operator performs a null check on the left-hand side variable (in this case, "name"). If the left-hand side is null, the operator returns the right-hand side value ("Anonymous" in this case) and assigns it to the left-hand side variable.

The null coalescing operator can be used with any nullable type, including reference types and nullable value types. This means it can handle null values for strings, integers, bools and other types.

 

Null Coalescing Operator Important Tips

1. Evaluation Efficiency

The expensive operation only runs when cachedValue is null, saving resources.

// Right-hand side only evaluates when needed
string result = cachedValue ?? FetchExpensiveOperation();

2. Reference vs. Value Types

The expensive operation only runs when cachedValue is null, saving resources.

// Works with nullable value types
int? nullableId = null;
int id = nullableId ?? 0;  // Works fine

// Won't compile with non-nullable value types
int number = 5;
int result = number ?? 10;  // Compilation error

3. Empty vs. Null Strings

Remember that an empty string is not null:

string empty = "";
string result = empty ?? "Default";  // Result is "" (empty string)
A tutorial on the null coalescing operator in C#. | Video: Gerald Versluis

More on Software Engineering63 Top Angular Interview Questions to Know

 

Null Coalescing Operator (??) Example

Let’s review an example where we want to assign a default value to an integer variable (age) if it is null:

int? age = GetAgeFromSomeSource(); // Assume this can return null

int defaultAge = 18; // Default age to be set if age is null
int actualAge = age ?? defaultAge;

In this case, if the "age" variable is null, the null coalescing operator assigns the value of "defaultAge" to "actualAge". Otherwise, it assigns the value of "age" itself.

In addition to assigning a default value, the null coalescing operator can also be used to return a default value directly without assigning it to a variable. For example:

string favoriteColor = GetFavoriteColorFromSomeSource(); // Assume this can return null

string color = favoriteColor ?? "Blue";
Console.WriteLine(color); // Output: Blue

In the above code, if "favoriteColor" is null, the null coalescing operator returns the default value ("Blue") directly without assigning it to a variable.

Overall, the C# null coalescing operator (??) is a handy tool for simplifying null checks and providing default values in C# code. It helps to write more concise and readable code by reducing the number of if-else statements and adding clarity to null value handling.

Frequently Asked Questions

The null coalescing operator (??) in C# is a versatile operator that simplifies the handling of null values and makes code more readable.

The null coalescing operator ?? is a binary operator in C# that returns the left-hand operand if it isn’t null; otherwise, it returns the right-hand operand. Its syntax is as follows:

 

leftOperand ?? rightOperand
Explore Job Matches.