int ?, double?, И т. Д. Являются обнуляемыми типами.Обнуляемые типы могут представлять все значения базового типа и дополнительное нулевое значение.
Каждый экземпляр обнуляемого типа имеет два общедоступных свойства только для чтения:
HasValue
HasValue имеет тип bool.Значение true, если переменная содержит ненулевое значение.
Value
Значение того же типа, что и базовый тип.Если HasValue равен true, Value содержит значимое значение.Если значение HasValue равно false, при доступе к Value будет возникать исключение InvalidOperationException.
int? x = 10;
if (x.HasValue)
{
System.Console.WriteLine(x.Value);
}
else
{
System.Console.WriteLine("Undefined");
}
http://msdn.microsoft.com/en-us/library/2cf62fcy.aspx#Y431