thing isn’t null. Since structs can’t be null, so Nullable<int> can’t be null.
The thing is… it is just compiler magic. You think it is null. In fact, the HasValue is just set to false.
If you call GetValueOrDefault it checks if HasValue is true or false:
public T GetValueOrDefault(T defaultValue)
{
return HasValue ? value : defaultValue;
}