将两个数字相加,或返回数值表达式的正值。还可用于连接两个字符串表达式。
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 的数据类型的数值类型。请参见 运算符结果的数据类型 (Visual Basic) 中的“整数算法”表。  | 
两个表达式均为 String 类型  | 
连接。  | 
一个表达式为数值数据类型而另一个表达式是字符串  | 
如果 Option Strict 为 On,则产生编译器错误。 如果 Option Strict 为 Off,则将 String 隐式转换为 Double 并执行加法运算。 如果 String 不能转换为 Double,将引发 InvalidCastException 异常。  | 
一个表达式为数值数据类型而另一个表达式为 Nothing (Visual Basic)  | 
相加,此时 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,其值为 ""。
 说明 | 
|---|
使用 + 运算符时,可能无法确定应该执行加法运算还是执行字符串连接运算。所以应使用 & 运算符执行连接操作,以消除多义性并提供自我说明代码。  | 
重载
+ 运算符可以被“重载”,这意味着当操作数的类型为类或结构时,该类或结构可以重新定义其行为。如果代码在这样的类或结构上使用此运算符,那么您一定要了解其重新定义的行为。有关更多信息,请参见 运算符过程 (Visual Basic)。
示例
下面的示例使用 + 运算符将数字相加。如果操作数均为数值,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.
若要消除多义性,应用 & 运算符代替 + 运算符执行连接操作。
说明