+ 运算符 (Visual Basic)

将两个数相加或返回数值表达式的正值。 还可用于连接两个字符串表达式。

语法

expression1 + expression2

or

+expression1  

组成部分

术语 定义
expression1 必需。 任何数值或字符串表达式。
expression2 必需,除非 + 运算符正在计算负值。 任何数值或字符串表达式。

结果

如果 expression1expression2 均为数值,则结果为其算术和。

如果 expression2 不存在,则 + 运算符是表达式未更改值的一元恒等运算符。 从这个意义上说,该操作包括保留 expression1 的符号,因此如果 expression1 为负,则结果为负。

如果 expression1expression2 都是字符串,则结果是其值的串联。

如果 expression1expression2 是混合类型,则采取的操作取决于它们的类型、内容以及 Option Strict 语句的设置。 有关详细信息,请参阅“注解”中的表。

支持的类型

所有数值类型,包括无符号和浮点类型、DecimalString

注解

通常,+ 会在可能的情况下执行算术加法,仅当两个表达式都是字符串时才进行连接。

如果两个表达式都不是 Object,Visual Basic 将执行以下操作。

表达式的数据类型 编译器操作
两个表达式都是数值数据类型(SByteByteShortUShortIntegerUIntegerLongULongDecimalSingleDouble 添加。 结果数据类型是适用于 expression1expression2 的数据类型的数值类型。 请参阅运算符结果的数据类型中的“整数运算”表。
两个表达式都是 String 类型 连接。
一个表达式是数值数据类型,另一个是字符串 如果 Option StrictOn,则生成编译器错误。

如果 Option StrictOff,则将 String 隐式转换为 Double 并相加。

如果 String 无法转换为 Double,则引发 InvalidCastException 异常。
一个表达式是数值数据类型,另一个是 Nothing 相加,Nothing 的值为零。
一个表达式是字符串,另一个是 Nothing 连接,Nothing 的值为 ""。

如果一个表达式是 Object 表达式,Visual Basic 将执行以下操作。

表达式的数据类型 编译器操作
Object 表达式包含数值,另一个表达式是数值数据类型 如果 Option StrictOn,则生成编译器错误。

如果 Option StrictOff,则相加。
Object 表达式包含数值,另一个表达式是 String 类型 如果 Option StrictOn,则生成编译器错误。

如果 Option StrictOff,则将 String 隐式转换为 Double 并相加。

如果 String 无法转换为 Double,则引发 InvalidCastException 异常。
Object 表达式包含字符串,另一个表达式是数值数据类型 如果 Option StrictOn,则生成编译器错误。

如果 Option StrictOff,则将字符串 Object 隐式转换为 Double 并相加。

如果字符串 Object 无法转换为 Double,则引发 InvalidCastException 异常。
Object 表达式包含字符串,另一个表达式是 String 类型 如果 Option StrictOn,则生成编译器错误。

如果 Option StrictOff,则将 Object 隐式转换为 String 并进行连接。

如果两个表达式都是 Object 表达式,Visual Basic 将执行以下操作(仅限 Option Strict Off)。

表达式的数据类型 编译器操作
两个 Object 表达式都包含数值 添加。
两个 Object 表达式都是 String 类型 连接。
一个 Object 表达式包含数值,另一个包含字符串 将字符串 Object 隐式转换为 Double 并相加。

如果字符串 Object 无法转换为数值,则引发 InvalidCastException 异常。

如果其中一个 Object 表达式的计算结果为 NothingDBNull,则 + 运算符将其视为值为 "" 的 String

注意

使用 + 运算符时,可能无法确定是进行相加还是字符串串联。 使用 & 运算符进行串联,以消除歧义并提供自我说明代码。

重载

可重载 + 运算符,这意味着当操作数具有某一类或结构时,该类或结构可重新定义其行为。 如果你的代码在这种类或结构上使用此运算符,请确保了解其重新定义的行为。 有关详细信息,请参阅 Operator Procedures

示例

以下示例使用 + 运算符进行加法运算。 如果操作数均为数值,Visual Basic 将计算算术结果。 算术结果表示两个操作数之和。

Dim sumNumber As Integer
sumNumber = 2 + 2
sumNumber = 4257.04 + 98112
' The preceding statements set sumNumber to 4 and 102369.

你还可以使用 + 运算符来连接字符串。 如果操作数都是字符串,Visual Basic 会将它们连接起来。 串联结果表示单个字符串,由两个操作数的内容一个接一个组成。

如果操作数是混合类型,则结果取决于 Option Strict 语句的设置。 以下示例演示了 Option StrictOn 时的结果。

Option Strict On
Dim var1 As String = "34"
Dim var2 As Integer = 6
Dim concatenatedNumber As Integer = var1 + var2
' The preceding statement generates a COMPILER ERROR. 

以下示例演示了 Option StrictOff 时的结果。

Option Strict Off
Dim var1 As String = "34"
Dim var2 As Integer = 6
Dim concatenatedNumber As Integer = var1 + var2
' The preceding statement returns 40 after the string in var1 is
' converted to a numeric value. This might be an unexpected result.
' We do not recommend use of Option Strict Off for these operations.

为了消除歧义,应使用 & 运算符而不是 + 进行连接。

另请参阅