The definition of Nullable
[SerializableAttribute]
public struct Nullable where T : struct, new()
The constraint
From section 4.1.10 of the C# language spec:
A non-nullable value type conversely is any value type other than
System.Nullableand its shorthandT?(for anyT), plus any type parameter that is constrained to be a non-nullable value type (that is, any type parameter with astructconstraint). TheSystem.Nullabletype specifies the value type constraint forT(§10.1.5), which means that the underlying type of a nullable type can be any non-nullable value type. The underlying type of a nullable type cannot be a nullable type or a reference type. For example,int??andstring?are invalid types.