【发布时间】:2012-07-11 21:48:02
【问题描述】:
selectedItem 有两个字段:
int? _coststring _serialNumber
在此示例中,selectedItem 的 _cost 和 _serialNumber 都为空。我正在通过它们的属性阅读selectedItem 的字段,并用它们的值填充文本框,当...
TextBox1.Text = selectedItem.Cost.ToString(); //no error
TextBox2.Text = selectedItem.SerialNumber.ToString(); //error
我知道SerialNumber.ToString() 是多余的(因为它已经是一个字符串),但我不明白为什么会导致这个异常:
可空对象必须有一个值。
-
int? _cost可以为空,并且没有值,但它没有给我异常。 -
string _serialNumber可以为空,并且没有值,但它确实给了我例外。
这个question 涉及到它,这家伙本质上是在问同样的事情,但是没有指定答案,它也没有解释为什么可以为空的int?例如,我可以在可为空的 int 上使用.ToString(),但不能在空字符串上使用吗?
【问题讨论】:
-
您链接的问题根本不一样。这个问题是关于
MessageBox.Show和String.Concat如何与null字符串一起工作。 -
请注意,您使用“可空”这个词来表示两个完全不同的东西。
int?是一个值类型,称为Nullable<T>,对空值有特殊处理;string是一个引用类型(虽然有点奇怪),它实际上有一个值null。int?总是有一个价值,它只是有一种特殊的方式来表达“我现在表现得像null。”
标签: c# string null int nullable