在 VB.NET 与 C# 中测试对象是否为 Nothing/null

Nat*_*ter 2 c#-to-vb.net

我正在将一些 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)