小编Nat*_*ter的帖子

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

我正在将一些 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 …
Run Code Online (Sandbox Code Playgroud)

c#-to-vb.net

2
推荐指数
1
解决办法
4万
查看次数

标签 统计

c#-to-vb.net ×1