我需要做类似的事情:
if isdbnull(value) or value = something then
'do something
else
'do something else
end if
Run Code Online (Sandbox Code Playgroud)
当然我使用这种方法得到一个错误,所以我的问题是我如何重写它以避免"运算符没有为dbnull和某些东西定义"错误?
有一些方法,您使用它可能取决于您正在使用的值.但是,如果你想要能够捕获所有条件的东西,那么我会这样做:
If Value Is Nothing OrElse IsDbNull(value) Then
'do something
Else
'do something else
End If
Run Code Online (Sandbox Code Playgroud)
这将检查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
Run Code Online (Sandbox Code Playgroud)
用法:
if NotNull(value, something) = something then
'do something
else
'do something else
end if
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4958 次 |
| 最近记录: |