vb.net“if statement”包含加号

时间:2015-12-16 14:17:40

标签: vb.net

我有一段令我困惑的代码:

                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语句中的“+”是正确的,它是什么意思?

1 个答案:

答案 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代替AndOrElse而不是Or,因为这些是短路运营商。否则会引发意外的异常:

Dim str As String = Nothing
If str IsNot Nothing And str.Length > 0 Then

End If

即使str IsNot Nothing已经False,也会对此进行评估。