簡體   English   中英

VB.NET奇怪的IF語句行為,總是其他

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM