我有一段代码,我很困惑:
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语句中的"+"是正确的,它是什么意思?
设置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
你得到这个有意义的编译器错误:
Option Strict On禁止从"整数"到"布尔"的隐式转换
您还应该使用AndAlso
替代And
和OrElse
取代Or
,因为这些都是短路运营商.否则后面会抛出一个意外的异常:
Dim str As String = Nothing If str IsNot Nothing And str.Length > 0 Then End If
在这里,即使str IsNot Nothing
已经评估了双方False
.