π Introduction
In C#, Null Reference Exceptions (NRE) are one of the most common runtime errors developers face. This happens when you try to use an object that has not been initialized or is set to null. These errors can crash your application if not handled properly.
π What is a Null Reference Exception?
A Null Reference Exception occurs when you try to access a member (property, method, or field) of an object that is null.
Example
string name = null;
Console.WriteLine(name.Length); // Throws NullReferenceException
In this case, the name is null, so trying to get the Length causes the exception.
π οΈ 1. Use Null Checks
The simplest way to prevent NRE is to check if an object is null before using it.
Example
if (name != null)
{
Console.WriteLine(name.Length);
}
else
{
Console.WriteLine("Name is null.");
}
This ensures the program only uses name if it has a valid value.
π 2. Use Null-Conditional Operator ?.
C# provides a null-conditional operator ?. that safely accesses members without throwing exceptions.
Example
Console.WriteLine(name?.Length); // Prints nothing instead of throwing an exception
If name is null, name?.Length returns null instead of throwing an error.
Very useful for chaining multiple properties safely.
π·οΈ 3. Use Null-Coalescing Operator ??
The null-coalescing operator ?? lets you provide a default value when a variable is null.
Example
int length = name?.Length ?? 0;
Console.WriteLine(length); // Prints 0 if name is null
This is especially helpful for default values and avoiding manual if-else checks.
π§© 4. Initialize Objects Properly
Always initialize objects before use to prevent nulls.
Example
List<string> names = new List<string>();
names.Add("John");
Instead of leaving names as null, initializing ensures itβs safe to use.
Helps avoid accidental null reference exceptions in collections or class properties.
π 5. Use throw Expressions for Early Validation
Sometimes, you want to fail early if a null is passed to a method.
Example
void PrintName(string name)
{
_ = name ?? throw new ArgumentNullException(nameof(name));
Console.WriteLine(name);
}
π§ 6. Use Nullable Reference Types (C# 8.0+)
C# 8 introduced nullable reference types to catch nulls at compile time.
Example
#nullable enable
string? name = null; // ? indicates nullable
Console.WriteLine(name?.Length);
π‘ 7. Handle Nulls in Collections and LINQ
Nulls can also appear in collections and LINQ queries. Always handle them safely.
Example
List<string> names = null;
foreach (var n in names ?? new List<string>())
{
Console.WriteLine(n);
}
π Summary
Null Reference Exceptions in C# can be avoided with proper checks, null-conditional operators, null-coalescing operators, object initialization, early validation, and nullable reference types. By following these best practices, you can write robust, error-free, and production-ready C# applications. Always anticipate nulls and handle them safely to prevent unexpected crashes and improve code quality.