Because value types can’t normally represent null values, C# includes nullable types–types that can represent their normal range of values or represent a null value.
Any value type can be used as a nullable type by adding a trailing ? to the type name.
1
2
3
4
| int i = 12; // regular int, can't be nullint? j = 22; // Nullable int, can be nullj = null; // Can also be null |
Here are some other examples of nullable types. In each case, we can set the variable’s value to null, which means that the variable doesn’t have a value that falls within the range of the corresponding type.
1
2
3
| double? r = null;bool? thisIsFalse = null;Mood? myMood = null; |

