int?
это синтаксический сахар, который упрощает объявление переменной, допускающей значение NULL. Это то же самое, что и Nullable<int>
.
Итак, если вы посмотрите на реализацию ToString()
метода для Nullable<T>
(см. Ниже) , вы можете заметить, что он возвращает пустую строку, если она не имеет значения.
public struct Nullable<T> where T : struct
{
public override string ToString()
{
if (!this.hasValue)
return "";
return this.value.ToString();
}
}
Что говорит MSDN:
Nullable.ToString - метод
Возвращает текстовое представление значения текущего объекта, допускающего значение NULL, если свойство HasValue имеет значение true, или пустую строку («»), если свойство HasValue имеет значение false.
Таким образом, следующий код будет выводить на консоль пустую строку вместо того, чтобы генерировать ArgumentNullException
исключение.
static void Main(string[] args)
{
int? a = null;
Console.WriteLine(a.ToString());
}