Cpt*_*rkt 69 c# string int null nullable
selectedItem 有两个领域:
int? _coststring _serialNumber在这个例子中,_cost和_serialNumber的selectedItem都是空.我正在阅读通过selectedItem他们的属性的字段,并填写文本框与他们的值,当...
TextBox1.Text = selectedItem.Cost.ToString(); //no error
TextBox2.Text = selectedItem.SerialNumber.ToString(); //error
Run Code Online (Sandbox Code Playgroud)
我明白这SerialNumber.ToString()是多余的(因为它已经是一个字符串),但我不明白为什么这会导致这个异常:
可以为空的对象必须具有值.
int? _cost 可以为空,并且没有值,但它没有给我例外.string _serialNumber可以为空,并且没有值,但它确实给了我例外.这个问题触及它,这家伙基本上是在问同样的事情,但是没有指定的答案,而且它也没有解释为什么可以为空int?例如,我可以.ToString()在可空的int上使用但不能在空字符串上使用吗?
Joh*_*y_D 89
因为string类型null确实没有任何意义,所以内存中没有任何对象.
但是int?即使值设置为null仍然指向某个对象,也要键入(可为空).
如果您阅读Jeffrey Richter的"CLR via C#",您会发现可空类型只是具有一些封装逻辑的常见类型的外观类,以便更方便地使用DB null.
检查msdn以了解可空类型.
Han*_*ing 32
A Nullable<int>是a struct,实际上不能为空.因此,对"null"结构的方法调用仍然有效.
有一些"编译器魔术"可以_cost == null生成有效的表达式.
| 归档时间: |
|
| 查看次数: |
7626 次 |
| 最近记录: |