怎麼來都IntelliSense和編譯器在VB.NET接受If 3 = True Then ...
?即使有Option Strict。VB.NET治療真/假的整數
它實際上把布爾值作爲整數,或者這是怎麼回事?
怎麼來都IntelliSense和編譯器在VB.NET接受If 3 = True Then ...
?即使有Option Strict。VB.NET治療真/假的整數
它實際上把布爾值作爲整數,或者這是怎麼回事?
任何非零整數值=布爾值爲真。整數值的
比較可以在布爾表達式中被使用。
幾乎正確。真是任何非零值。所以負值也等同於真實。 – 2011-01-21 13:47:56
真轉換爲Boolean計算到True
,除了被等同爲任何非零值。您應該收到
If -3 = True Then
@Oded「L相同的響應 - 在猜測,這可能是因爲VB6/VBA這樣的行爲,並保留使用這些語言的開發人員在他們的快樂地帶 - 奧德3天前「
事實上,我所瞭解的情況是,Visual Basic 6.0和VBA是在與編程社區在其治療布爾的休息機會,在對於這兩種語言,-1 =真正。向「除0以外的任何值=真」的過渡是爲了向後兼容。
我相信,世界上大多數國家,最重要的運營商是0 =假。除0之外的任何值均解析爲true。
雖然在很多情況下,我打賭的標準是0 =假1 =真。當Microsoft開發VB.NET時,他們需要保留向後兼容性,以便從Visual Basic 6.0/VBA中保留-1 = true。因此,他們的True = <> 0。通過這種方式,1或-1將解析爲真。這似乎比一個更復雜的條件語句更清晰,它涵蓋了1或-1兩種情況。本質是什麼,他們降落直的評價比0
以外的任何值進行覈對。如果你仔細想想,這似乎與基本的二進制概念一致爲好。開關打開(除0之外的某個值)或關閉(值爲零)。
我明白了。我並不真正理解這種實現的巨大好處 - 我通常是一個「明確的而不是隱含的」 - 種人,但這是一個不同的問題。 ;) 感謝你的回答。 – 2011-01-21 13:58:05