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