+ 运算符 (Visual Basic)
将两个数相加或返回数值表达式的正值。 还可用于连接两个字符串表达式。
语法
expression1 + expression2
or
+expression1
组成部分
术语 | 定义 |
---|---|
expression1 |
必需。 任何数值或字符串表达式。 |
expression2 |
必需,除非 + 运算符正在计算负值。 任何数值或字符串表达式。 |
结果
如果 expression1
和 expression2
均为数值,则结果为其算术和。
如果 expression2
不存在,则 +
运算符是表达式未更改值的一元恒等运算符。 从这个意义上说,该操作包括保留 expression1
的符号,因此如果 expression1
为负,则结果为负。
如果 expression1
和 expression2
都是字符串,则结果是其值的串联。
如果 expression1
和 expression2
是混合类型,则采取的操作取决于它们的类型、内容以及 Option Strict 语句的设置。 有关详细信息,请参阅“注解”中的表。
支持的类型
所有数值类型,包括无符号和浮点类型、Decimal
和 String
。
注解
通常,+
会在可能的情况下执行算术加法,仅当两个表达式都是字符串时才进行连接。
如果两个表达式都不是 Object
,Visual Basic 将执行以下操作。
表达式的数据类型 | 编译器操作 |
---|---|
两个表达式都是数值数据类型(SByte 、Byte 、Short 、UShort 、Integer 、UInteger 、Long 、ULong 、Decimal 、Single 或 Double ) |
添加。 结果数据类型是适用于 expression1 和 expression2 的数据类型的数值类型。 请参阅运算符结果的数据类型中的“整数运算”表。 |
两个表达式都是 String 类型 |
连接。 |
一个表达式是数值数据类型,另一个是字符串 | 如果 Option Strict 为 On ,则生成编译器错误。如果 Option Strict 为 Off ,则将 String 隐式转换为 Double 并相加。如果 String 无法转换为 Double ,则引发 InvalidCastException 异常。 |
一个表达式是数值数据类型,另一个是 Nothing | 相加,Nothing 的值为零。 |
一个表达式是字符串,另一个是 Nothing |
连接,Nothing 的值为 ""。 |
如果一个表达式是 Object
表达式,Visual Basic 将执行以下操作。
表达式的数据类型 | 编译器操作 |
---|---|
Object 表达式包含数值,另一个表达式是数值数据类型 |
如果 Option Strict 为 On ,则生成编译器错误。如果 Option Strict 为 Off ,则相加。 |
Object 表达式包含数值,另一个表达式是 String 类型 |
如果 Option Strict 为 On ,则生成编译器错误。如果 Option Strict 为 Off ,则将 String 隐式转换为 Double 并相加。如果 String 无法转换为 Double ,则引发 InvalidCastException 异常。 |
Object 表达式包含字符串,另一个表达式是数值数据类型 |
如果 Option Strict 为 On ,则生成编译器错误。如果 Option Strict 为 Off ,则将字符串 Object 隐式转换为 Double 并相加。如果字符串 Object 无法转换为 Double ,则引发 InvalidCastException 异常。 |
Object 表达式包含字符串,另一个表达式是 String 类型 |
如果 Option Strict 为 On ,则生成编译器错误。如果 Option Strict 为 Off ,则将 Object 隐式转换为 String 并进行连接。 |
如果两个表达式都是 Object
表达式,Visual Basic 将执行以下操作(仅限 Option Strict Off
)。
表达式的数据类型 | 编译器操作 |
---|---|
两个 Object 表达式都包含数值 |
添加。 |
两个 Object 表达式都是 String 类型 |
连接。 |
一个 Object 表达式包含数值,另一个包含字符串 |
将字符串 Object 隐式转换为 Double 并相加。如果字符串 Object 无法转换为数值,则引发 InvalidCastException 异常。 |
如果其中一个 Object
表达式的计算结果为 Nothing 或 DBNull,则 +
运算符将其视为值为 "" 的 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 Strict
为 On
时的结果。
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 Strict
为 Off
时的结果。
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.
为了消除歧义,应使用 &
运算符而不是 +
进行连接。