gpt4 book ai didi

vb.net - “Conversion from type ' DBNull ' to type ' bool ' is not valid”,在检查它不是DBNull之后

转载 作者:行者123 更新时间:2023-12-04 22:35:02 29 4
gpt4 key购买 nike

在我的ASP.Net Web应用程序中,出现此错误:

Conversion from type 'DBNull' to type 'Boolean' is not valid.



通过此功能:
Namespace atc
Public Class Nil
'...
Public Shared Function Bool(ByVal Item As Object) As Boolean
Return IIf(Item IsNot Nothing AndAlso Not IsDBNull(Item), CBool(Item), False)
End Function
'...
End Class
End Namespace

如您所见,我正在显式检查 Item是否为 DBNull,如果是,则返回 False

Item而不是 DBNull时,会发生错误 而不是,所以我不明白为什么会这样。

最佳答案

当使用IIf时,无论条件评估为true还是false,所有参数都将被求值。在您的情况下,如果Item为null或DBNull,该函数将返回false,但是CBool(Item)无论如何都会在后台静默执行,因此会引发异常。

在VB.NET 2008中,添加了If关键字以提供真正的三元运算符。将您的IIf函数调用替换为以下内容:

Public Shared Function Bool(ByVal Item As Object) As Boolean
Return If(Item IsNot Nothing AndAlso Not IsDBNull(Item), CBool(Item), False)
End Function

摘自 MSDN:

An IIf function always evaluates all three of its arguments, whereas an If operator that has three arguments evaluates only two of them.

关于vb.net - “Conversion from type ' DBNull ' to type ' bool ' is not valid”,在检查它不是DBNull之后,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8913447/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com