selectedItem
有兩個字段:爲什麼.ToString()在空值的可空int上工作正常時,空字符串上的.ToString()會導致null錯誤?
int? _cost
string _serialNumber
在這個例子中,_cost
和selectedItem
_serialNumber
都是NULL。我讀通過的通過它們的屬性selectedItem
的領域,並在文本框與他們的價值觀,當填充...
TextBox1.Text = selectedItem.Cost.ToString(); //no error
TextBox2.Text = selectedItem.SerialNumber.ToString(); //error
我明白SerialNumber.ToString()
是多餘的(因爲它已經是一個字符串),但我不」不懂爲什麼這導致該異常:
Nullable object must have a value.
int? _cost
是空的,並且不具有價值,但它並沒有給我的異常。string _serialNumber
是可以爲空,並且沒有值,但它確實給我例外。
上呢?這question接觸,這傢伙基本上是問同樣的事情,但沒有指定的答案,也沒有解釋爲什麼一個可以爲空int
?例如,我可以在可空的int上使用.ToString()
,但不能在空字符串上使用?
您鏈接到的問題是不一樣的。那個問題是關於'MessageBox.Show'和'String.Concat'如何使用'null'字符串。 – 2012-07-12 10:28:03
請注意,您使用「可空」這個詞來表示兩個完全不同的東西。 'int?'是一個值類型,稱爲'Nullable',它具有對空值的特殊處理; 'string'是一個引用類型,(雖然有點奇怪),它可以*實際上有* null的值。一個'int?'總是有一個值,它只是有一種特殊的方式來表示「我現在的行爲像'null'」。 –
2012-07-12 16:45:24
謝謝大家的好評和澄清。很多東西都是我以前不知道的。 – CptSupermrkt 2012-07-13 01:04:52