VB.NET 奇怪的 IF 语句行为,总是其他
本文关键字:其他 语句 NET IF VB | 更新日期: 2023-09-27 18:33:54
>我已经尝试了这两个块,但它返回相同的值。我不描述更多,我只是显示代码:
Dim f As Nullable(Of Integer)
If f = 1 Then
Console.WriteLine("Equal")
Else
Console.WriteLine("Not Equal")
End If
它提示我"不等于"
我只是添加一个 NOT,然后我会得到 NOT 答案,但我得到的答案与上面相同!!
Dim f As Nullable(Of Integer)
If Not f = 1 Then
Console.WriteLine("Equal")
Else
Console.WriteLine("Not Equal")
End If
它在 C# 中可以正常工作...
TL;DR:它根据为 VB 指定的行为正常工作,这与为 C# 指定的行为不同。
比较 "f = 1" 在 VB 中产生Nullable(Of Boolean)
。将任何值与"无"进行比较的结果是"无",而"无"和"非无"都不是"真",因此您总是会以 Else 子句结束。
有关更多详细信息,请参阅 VB 中可为空的值类型的 MSDN 页面。特别是,如果您查找"比较可为空的类型",您会发现一个与您的情况非常相似的示例(带有解释)。特别:
当布尔变量或表达式的值为 Nothing 时,它既不为真也不为假。