我正在将一些 C# 代码转换为 VB.NET。我有一个简单的类似字典的数据结构,其中包含名称/值对。value 元素的类型为 Object。我的 C# 代码看起来像这样
if(x.Value != null)
// 1: Store x.Value in database
else
// Sore DBNULL.Value in database
Run Code Online (Sandbox Code Playgroud)
正如预期的那样,如果 x.Value 恰好是值为 false 的布尔值,则执行上面的代码块 1。
但是,等效的 VB.NET 代码将落入 else 块中的布尔值为 False
If x.Value Is Not Nothing Then
' Store x.Value in database
Else
' We land here if x.Value is a Boolean with a value of False and incorrectly store DBNULL.Value in database
EndIF
Run Code Online (Sandbox Code Playgroud)
VB 显然认为带有 False 值的布尔值等同于 Nothing。我会保留我对 VB 的评论,但是有没有一种简单的方法(即不使用反射)来解决这个问题?
编辑:我原来的 VB 代码实际上是
If x.Value <> Nothing
Run Code Online (Sandbox Code Playgroud)
这如描述的那样工作。
If x.Value IsNot Nothing
Run Code Online (Sandbox Code Playgroud)
工作正常。谢谢史蒂夫。
小智 5
您必须使用in和inIsNot之间没有空格。所以你的代码看起来像这样:'Is''Not'vb
If x.Value IsNot Nothing Then
...do Stuff...
Else
...do else stuff...
End IF
Run Code Online (Sandbox Code Playgroud)