我有一段令我困惑的代码:
If (_campaignIdValue <> "SALESFORCE") And (_campaignIdValue <> "SFNESMORT") And _
(_campaignIdValue <> "SFNESTERM") And (_campaignIdValue <> "SFTENNIS") +
(_campaignIdValue <> "LEADSINIT") And (_campaignIdValue <> "LEADSEXPIR") And _
(_campaignIdValue <> "LEADSRSRCH") Then
' Some code
End If
为什么if语句中的“+”是正确的,它是什么意思?
答案 0 :(得分:6)
设置Option Strict On
(最好作为默认项目设置),然后您不会获得任何魔术布尔转换,但您必须修复此编译器错误。使用Option Strict Off
(遗憾的是默认值)我认为Convert.ToBoolean
被调用,这意味着任何不等于零的内容都被视为True
。很奇怪,不是吗?
Dim weirdBool As Boolean = 1 - 1 ' evaluates to False with Strict Off '
weirdBool = 1 + 1 ' evaluates to True with Strict Off '
Option Strict On
获得this meaningful compiler error:
Option Strict On禁止来自&#39; Integer&#39;的隐式转换。至 &#39;布尔&#39;
您还应该使用AndAlso
代替And
和OrElse
而不是Or
,因为这些是短路运营商。否则会引发意外的异常:
Dim str As String = Nothing
If str IsNot Nothing And str.Length > 0 Then
End If
即使str IsNot Nothing
已经False
,也会对此进行评估。