【问题标题】:Nullable object must have a value. in VB.NET可空对象必须有一个值。在 VB.NET 中
【发布时间】:2014-04-03 19:09:42
【问题描述】:

我在 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 值,但是当我运行此语句时出现异常。

可空对象必须有值

我的说法有误吗?

【问题讨论】:

    标签: vb.net


    【解决方案1】:

    改为使用“如果”:

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

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

    【讨论】:

    • 哎呀,我的错。我在想null 并使用了Iif 然后我在其中混合了.HasValue
    【解决方案2】:
     Dim cp As Single
            '    Try
    If tt.getsumpaid4cors(CInt(sidtxt.Text), CInt(coidtxt.Text), CInt(tidtxt.Text), CInt(stidtxt.Text)).HasValue Then
    
                cp = tt.getsumpaid4cors(CInt(sidtxt.Text), CInt(coidtxt.Text), CInt(tidtxt.Text), CInt(stidtxt.Text)).Value
            Else
                cp = 0
    End If
    

    【讨论】:

    • 欢迎来到 Stack Overflow!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提出问题的人。请edit您的回答添加解释并说明适用的限制和假设。
    猜你喜欢
    • 1970-01-01
    • 2010-12-26
    • 1970-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多