当前位置 : 主页 > 编程语言 > c语言 >

vb.net – 将If运算符的结果赋给System.Nullable类型

来源:互联网 收集:自由互联 发布时间:2021-06-24
使用If运算符( http://msdn.microsoft.com/en-us/library/bb513985(v=VS.100).aspx)将值赋给System.Nullable对象时,如果结果为Nothing(null),则为该对象分配0. 例: 'Expected value is null (Nothing). Actual value assigned is
使用If运算符( http://msdn.microsoft.com/en-us/library/bb513985(v=VS.100).aspx)将值赋给System.Nullable对象时,如果结果为Nothing(null),则为该对象分配0.

例:

'Expected value is null (Nothing). Actual value assigned is 0.
Dim x As System.Nullable(Of Integer) = If(1 = 0, 1, Nothing)

如果x是可空类型,为什么它被赋值为0的默认整数类型.它不应该接收null值吗?

值类型上下文中的任何内容都不会解析为该类型的默认值.对于整数,这只是0.

If运算符在其参数类型之间不进行任何转换,它们都被平等对待 – 在您的情况下为Integer.因此你的代码是相同的

Dim x As Integer? = If(1 = 0, 1, 0)

要使结果可为空,您需要使类型显式化.

Dim x As Integer? = If(1 = 0, 1, CType(Nothing, Integer?))
网友评论