为什么此结果 0 (零)且没什么?
Dim foobar As Integer? = If(False, 1, Nothing)
如果变量属于值类型,则Nothing的行为取决于 变量是否为可空数据类型。代表一个 可空值类型,添加?修饰符到类型名称。分配 无可变变量的任何内容都将值设置为null。更多 信息和示例,请参见Nullable Value Types。
进一步的研究会产生更多有趣的结果:
Dim foo As Integer? = If(False, 1, Nothing) '0
Dim bar As String = If(False, 1, Nothing) '"0"
Dim bar2 As String = If(False, "1", Nothing) 'Nothing
Dim bar3 As Integer? = If(False, "1", Nothing) 'Nothing
Dim bar4 As Integer? = If(False, CStr(1), Nothing) '0
以下建议结果类型是否基于 类型 第二个值?
Dim bar3 As Integer? = If(False, "1", Nothing) 'Nothing
已编辑以及其他发现和所需结果,但为什么需要评估BOTH参数而不仅仅是If()的短路版本?
Dim foo As Integer? = IIf(False, 1, Nothing) 'Nothing
答案 0 :(得分:0)
除了 dbasnett 的回答,您还可以:
Dim foo As Integer? = If(False, 1, CType(Nothing, Integer?))