vb.net "if statement"包含加号

标签 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 语句中的“+”是可以的,它是什么意思?

最佳答案

设置Option Strict On (最好作为默认项目设置),那么你不会得到任何神奇的 bool 转换,但你必须修复这个编译器错误。使用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 disallows implicit conversions from 'Integer' to 'Boolean'

您还应该使用 AndAlso 而不是 AndOrElse 而不是 Or 因为它们是短路的运营商。否则以下将引发意外异常:

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

End If

即使 str IsNot Nothing 已经是 False,这里也会计算双方。

关于vb.net "if statement"包含加号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34314351/

相关文章:

vb.net - 'break' 的等效 VB 关键字

c# - 使用 ASP.net 和 VB.net(或 C#)编辑和删除 XML 文件中的数据

.net - MSMQ MessageQueueException 启动后不久

asp.net - 单选按钮检查更改事件未触发

sql - 使用 SqlDataReader 从 SQL Server 数据库读取数据时出错

c# - 如何在出现错误时优雅地退出我的应用程序?

database - 如何使用 Entity Framework 填充数据库

c# - 在 .NET 中更改 DateTimePicker 的背景颜色

.net - 网络掉线时在网络上使用 FileStream

.net - 多线程列表中的SyncLock仍然抛出ArgumentException