if dbnull和value的语法

时间:2009-11-12 16:18:57

标签: vb.net

我需要做类似的事情:

if isdbnull(value) or value = something then
'do something
else
'do something else
end if

当然我使用这种方法会出错,所以我的问题是如何重写它以避免“运算符没有为dbnull和某些东西定义”错误?

4 个答案:

答案 0 :(得分:6)

有一些方法,您使用它可能取决于您正在使用的值。但是,如果你想要能够捕获所有条件的东西,那么我会这样做:

If Value Is Nothing OrElse IsDbNull(value) Then
  'do something
Else
  'do something else
End If

这将检查Value是否为空,有时可能在没有值实际为DBNull的情况下发生。

但最重要的部分是OrElse。 OrElse是一个短路运算符,一旦运行时知道结果将是什么,它就会终止对条件的评估。相比之下,Or运算符将执行整个条件,无论如何,这就是原始代码失败的原因。

编辑:

现在我再次查看您的示例代码,我可以看到我的NotNull()函数如何帮助您:

Public Shared Function NotNull(Of T)(ByVal Value As T, ByVal DefaultValue As T) As T
    If Value Is Nothing OrElse IsDBNull(Value) Then
        Return DefaultValue
    Else
        Return Value
    End If
End Function

用法:

if NotNull(value, something) = something then
'do something
else
'do something else
end if

答案 1 :(得分:3)

我倾向于使用OrElse,AndAlso运算符

If IsDBnull(value) OrElse value = something Then
    ''#do something
Else
    ''#do something else
End If

快捷方式运算符表示如果第一个为真,则不会执行其余的If条件。

编辑:当我格式化答案时,史蒂夫打败了我:)

答案 2 :(得分:0)

value Is DBNull.Value

答案 3 :(得分:-1)

价值不算什么