🌟 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

🏷️ 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");

🔒 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.