可以为空的对象必须具有值。在VB.NET中

时间:2014-04-03 19:09:42

标签: vb.net

我在VB.NET中有以下代码:

Public Sub Test(ByRef clientId As Nullable(Of Integer))
    Dim t As Object = IIf(clientId.HasValue, clientId.Value, DBNull.Value)
End Sub

主叫方将Nothing传递为clientId值,但是当我运行此语句时,我得到了异常。

  

Nullable对象必须具有值

我的陈述是错的吗?

1 个答案:

答案 0 :(得分:5)

将其更改为使用“如果”:

Dim t As Object = If(clientId.HasValue, clientId.Value, DBNull.Value)

“IIf”的问题在于它只是一个函数调用 - 所有参数总是被评估,而VB'If'运算符的行为类似于'?' C#/ Java中的运算符 - 它只评估需要评估的内容。