question mark after data type c#
Nullable types support a value type that can be assigned a null reference.
Nullable types can represent all the values of an underlying type,
and an additional null value. Nullable types are declared in one of two ways:
( System.Nullable<T> variable ) or ( T? variable )