Vb.net 比较可为空的(布尔值)

Vb.net 比较可为空的(布尔值),vb.net,nullable,Vb.net,Nullable,我试图在VB.NET 2010中比较两个类型为nullable(布尔值)的变量。其中一个变量的值为False,另一个变量的值为Nothing。现在我希望以下表达式的计算结果为true,但事实并非如此: Dim var1 as nullable(of boolean) = False Dim var2 as nullable(of boolean) var2 = Nothing If var1 <> var2 Then msgbox "they are different" End

我试图在VB.NET 2010中比较两个类型为
nullable(布尔值)
的变量。其中一个变量的值为False,另一个变量的值为Nothing。现在我希望以下表达式的计算结果为true,但事实并非如此:

Dim var1 as nullable(of boolean) = False
Dim var2 as nullable(of boolean)
var2 = Nothing

If var1 <> var2 Then
 msgbox "they are different"
End If
Dim var1可为空(属于布尔值)=False
Dim var2可为空(布尔值)
var2=无
如果var1 var2那么
msgbox“它们是不同的”
如果结束

为什么我看不到我的MsgBox?我应该如何比较两个可空变量(布尔值)?

我认为可空变量具有Value和HasValue属性。

基本上你必须说:

If (var1.HasValue And var2.HasValue) And (var1.Value <> var2.Value) Then
      '
End If
If(var1.HasValue和var2.HasValue)和(var1.Value var2.Value)则
'
如果结束

我已经很久没有写VB了。我是一个典型的C#guy。不过,上述概念是正确的。

这是因为在VB.NET中

Console.WriteLine(False = Nothing)
打印
True

这与可空性无关。

您可以使用:

指示两个指定的
Nullable(Of T)
对象是否相等


如果var1为null,但var2有一个值,则此代码不会执行此任务。显示消息框的正确方法是MsgBox(“它们不同”),啊,比布尔值好得多?毫无意义。
If Not Nullable.Equals(var1, var2) Then
    MsgBox("they are different")
End If