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

har*_*ang 1 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
Run Code Online (Sandbox Code Playgroud)

调用方传入值Nothing作为clientId值,但是当我运行此语句时,我得到了异常.

可以为空的对象必须具有值

我的陈述是错的吗?

Dav*_*jas 5

将其更改为使用"如果":

Dim t As Object = If(clientId.HasValue, clientId.Value, DBNull.Value)
Run Code Online (Sandbox Code Playgroud)

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