[英]VB.NET strange IF statement behavior, always else
我試過這兩個塊,但它返回相同的值。 我不再贅述,我只是顯示代碼:
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)
。 將任何值與Nothing進行比較的結果是Nothing,並且Nothing和“ Not Nothing”都不是“ True”,因此,您總是會遇到Else子句。
有關更多詳細信息,請參見MSDN頁面以獲取VB中可為空的值類型 。 特別是,如果您尋找“比較可空類型”,您將找到一個與您的情況非常相似的示例(帶有解釋)。 尤其是:
當布爾變量或表達式的值為Nothing時,它既不是true也不是false。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.