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
Возвращает текстовое представление значения текущего объекта Nullable
если свойство HasValue равно true, или пустая строка (""), если
Свойство HasValue имеет значение false.
Таким образом, следующий код выведет пустую строку в консоль, а не выдаст ArgumentNullException
исключение.
static void Main(string[] args)
{
int? a = null;
Console.WriteLine(a.ToString()); // Prints empty string to console.
}