Lesson 44 +10 XP

Nullable Types

Nullable Types

By default, value types like int and double cannot hold null. The nullable types let them represent "no value".

Nullable value types

Add ? to make a value type nullable:

int? age = null;
double? score = null;
bool? isDone = null;

Why nullable?

Databases and real life are full of missing values. A int? can represent "we don't know the age yet".

Check for a value

Use .HasValue and .Value:

int? age = 25;
if (age.HasValue)
{
  Console.WriteLine(age.Value);   // 25
}

The ?? operator

?? provides a fallback when a nullable is null:

int? age = null;
int realAge = age ?? 0;   // age is null, so realAge = 0

Nullable reference types

Modern C# also tracks whether reference types (like string) can be null. The compiler warns you when you might be using null unsafely.

TL;DR

  • int?, double?, bool? can hold null.
  • .HasValue / .Value inspect a nullable.
  • ?? gives a fallback value.
  • Value types are null by default; ? makes them nullable.