Sometimes, you want to store a value that can also be empty or missing. Nullable value types let you do that with simple data like numbers or dates.
When you want to represent a number that might not have a value yet, like a test score that hasn't been entered.
When working with dates that might be unknown, like a person's date of death if they are still alive.
When reading data from a database where some fields can be empty.
When you want to check if a value was set or left blank in a form.
When you want to avoid using special values like -1 to mean 'no value'.
Syntax
C Sharp (C#)
int? myNumber;
Nullable<int> myOtherNumber;
You can add a question mark ? after a value type to make it nullable.
Alternatively, use Nullable<T> where T is a value type.
Examples
This example shows a nullable integer age that starts empty (null). We check if it has no value.
C Sharp (C#)
int? age = null;
if (age == null) {
Console.WriteLine("Age is unknown.");
}
Here, a nullable double holds a value. We use HasValue to check if it has data, then print it.
C Sharp (C#)
Nullable<double> temperature = 36.6;
if (temperature.HasValue) {
Console.WriteLine($"Temperature: {temperature.Value}");
}
You can assign a value or null to a nullable type anytime.
C Sharp (C#)
int? score = 85;
score = null; // now score has no value
Sample Program
This program starts with a nullable integer testScore that has no value. It prints a message. Then it sets a value and prints it.
C Sharp (C#)
using System;
class Program {
staticvoid Main() {
int? testScore = null;
if (testScore == null) {
Console.WriteLine("Test score is not set yet.");
}
testScore = 90;
if (testScore.HasValue) {
Console.WriteLine($"Test score is {testScore.Value}.");
}
}
}
OutputSuccess
Important Notes
Nullable types are useful to avoid errors when a value might be missing.
Use .HasValue to check if there is a value, and .Value to get it safely.
Trying to get .Value when there is no value causes an error.
Summary
Nullable value types let you store normal values or no value (null).
Use ? after a type or Nullable<T> to create them.
Always check if a nullable has a value before using it.
Practice
(1/5)
1. What does a nullable value type in C# allow you to do?
easy
A. Store only non-null values
B. Store values only in reference types
C. Store multiple values at once
D. Store a value or no value (null)
Solution
Step 1: Understand nullable value types
Nullable value types allow a value type to hold either a normal value or no value (null).
Step 2: Compare options
Only Store a value or no value (null) correctly describes this behavior; others are incorrect because value types normally cannot be null.
Final Answer:
Store a value or no value (null) -> Option D
Quick Check:
Nullable value type = value or null [OK]
Hint: Nullable means value or null, not multiple values [OK]
Common Mistakes:
Thinking nullable stores multiple values
Confusing nullable with reference types
Assuming nullable cannot hold null
2. Which of the following is the correct syntax to declare a nullable integer in C#?
easy
A. int number?;
B. int? number;
C. nullable int number;
D. Nullable number int;
Solution
Step 1: Recall nullable syntax
In C#, you add a question mark after the value type to make it nullable, like int?.
Step 2: Check each option
Only int? number; uses the correct syntax int? number;. Others are invalid syntax.
Final Answer:
int? number; -> Option B
Quick Check:
Nullable int syntax = int? [OK]
Hint: Use ? right after type for nullable, like int? [OK]
Common Mistakes:
Placing ? after variable name
Using 'nullable' keyword incorrectly
Mixing order of type and nullable
3. What is the output of this C# code?
int? x = null; int y = x ?? 5; Console.WriteLine(y);
medium
A. 0
B. null
C. 5
D. Compilation error
Solution
Step 1: Understand the null-coalescing operator
The operator ?? returns the left value if not null; otherwise, it returns the right value.
Step 2: Apply to given code
Since x is null, y gets the value 5, so Console.WriteLine(y); prints 5.
Final Answer:
5 -> Option C
Quick Check:
x is null, so y = 5 [OK]
Hint: ?? returns right value if left is null [OK]
Common Mistakes:
Assuming null prints as 0
Confusing ?? with || operator
Expecting compilation error for null assignment
4. Identify the error in this code snippet:
int? a = 10; int b = a; Console.WriteLine(b);
medium
A. Cannot assign nullable int to int without checking for null
B. Variable 'a' must be initialized
C. Console.WriteLine cannot print int values
D. No error, code runs fine
Solution
Step 1: Check assignment from nullable to non-nullable
Assigning a nullable int directly to an int variable without checking for null causes a compile error.
Step 2: Explain why error occurs
Because a might be null, C# requires explicit null check or use of .Value or null-coalescing operator.
Final Answer:
Cannot assign nullable int to int without checking for null -> Option A
Quick Check:
Nullable to int needs null check [OK]
Hint: Check nullable has value before assigning to non-nullable [OK]
Common Mistakes:
Ignoring null check before assignment
Assuming implicit conversion works
Thinking Console.WriteLine causes error
5. Given a nullable double double? d = null;, which code safely assigns its value to a non-nullable double result with default 0.0 if d is null?
hard
A. double result = d ?? 0.0;
B. double result = d.Value;
C. double result = (double)d;
D. double result = d != null ? d : null;
Solution
Step 1: Understand safe assignment from nullable
To assign a nullable to non-nullable safely, provide a default value if null using ??.
Step 2: Evaluate each option
double result = d.Value; throws exception if d is null. double result = d ?? 0.0; uses ?? to assign 0.0 if null, which is safe. double result = (double)d; casts but throws if null. double result = d != null ? d : null; tries to assign null to non-nullable, invalid.
Final Answer:
double result = d ?? 0.0; -> Option A
Quick Check:
Use ?? to provide default for nullable [OK]
Hint: Use ?? operator to assign default if nullable is null [OK]
Common Mistakes:
Using .Value without null check
Casting nullable directly without check
Assigning null to non-nullable variable
Recommended
Ready to prove it?
Pass the test and this pattern moves unknownstrongwhile earning +1 Grip toward your certificate.