Почему.ToString ()в нулевой строке вызывает нулевую ошибку, когда.ToString ()отлично работает с нулевым целым числом с нулевым значением?

selectedItemимеет два поля:

  • int? _cost
  • string _serialNumber

В этом примере _costи _serialNumberиз selectedItemОБА являются нулевыми. Я читаю поля selectedItemчерез их свойства и заполняю текстовые поля их значениями, когда...

TextBox1.Text = selectedItem.Cost.ToString(); //no error
TextBox2.Text = selectedItem.SerialNumber.ToString(); //error

Я понимаю, что SerialNumber.ToString()является избыточным (, потому что это уже строка ), но я не понимаю, почему это вызывает это исключение:

Nullable object must have a value.

  • int? _costимеет значение NULL и не имеет значения, но не дает мне исключения.
  • string _serialNumberдопускает значение NULL и не имеет значения, но действительно дает мне исключение.

Этот вопрос касается этого, парень, по сути, спрашивает то же самое, но нет определенного ответа, и это также не объясняет, почему обнуляемый int? Например, могу ли я использовать .ToString()для целого числа, допускающего значение NULL, но не для нулевой строки?

69
задан Community 23 May 2017 в 10:31
поделиться