Swiftorial Logo
Home
Swift Lessons
Tutorials
Learn More
Career
Resources

Nullable Types in C#

Introduction

Nullable types in C# allow variables to hold null values in addition to their normal range of values. This is particularly useful when dealing with databases or other data sources where a value might be undefined or missing.

Basic Syntax

To declare a nullable type, you use the ? symbol after the value type. Here is the syntax:

int? nullableInt = null;

In this example, nullableInt can hold any integer value or be null.

Checking for Null

You can check if a nullable type has a value using the HasValue property or by comparing it to null.

int? nullableInt = 5;
if (nullableInt.HasValue)
{
    Console.WriteLine("Value: " + nullableInt.Value);
}
else
{
    Console.WriteLine("No value");
}
                
Value: 5

Null Coalescing Operator

The null coalescing operator ?? provides a way to define a default value when a nullable type is null.

int? nullableInt = null;
int nonNullableInt = nullableInt ?? 0;
Console.WriteLine(nonNullableInt); // Output: 0
                
0

Nullable Types with Reference Types

Starting with C# 8.0, reference types can also be marked as nullable using the ? symbol. This helps in avoiding null reference exceptions.

string? nullableString = null;
if (nullableString == null)
{
    Console.WriteLine("String is null");
}
                
String is null

Examples and Use Cases

Here are a few practical examples where nullable types can be useful:

// Example 1: Database retrieval
int? age = GetAgeFromDatabase(userId);
if (age.HasValue)
{
    Console.WriteLine("User age: " + age.Value);
}
else
{
    Console.WriteLine("Age not available");
}

// Example 2: User input
int? userInput = GetUserInput();
int validInput = userInput ?? -1;
Console.WriteLine("Input: " + validInput);
                
User age: 25
Input: -1