+ 运算符 (Visual Basic)

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

语法

expression1 + expression2

+expression1  

部件

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

结果

expression2如果expression1两者均为数值,则结果是其算术总和。

如果 expression2 不存在,则 + 运算符是表达式未更改值的 一元 标识运算符。 从这个意义上说,该作由保留符号 expression1组成,因此如果为负数,则结果是负 expression1 数。

expression2如果expression1同时是两个字符串,则结果是其值的串联。

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

支持的类型

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

注解

通常, + 尽可能执行算术加法,并且仅在两个表达式都是字符串时连接。

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

表达式的数据类型 按编译器执行的作
两个表达式都是数值数据类型(SByte、、ByteUShortShortIntegerUInteger、、Long、、ULongDecimal、或DoubleSingle 添加。 结果数据类型是适合数据类型和expression2数据类型expression1的数值类型。 请参阅 运算符结果数据类型中的“整数算术”表。
这两个表达式的类型都是 String 连接。
一个表达式是数值数据类型,另一个表达式是字符串 On如果是Option Strict,则生成编译器错误。

Off如果是Option Strict,则隐式转换为StringDouble并添加。

如果无法转换为DoubleString对象,则引发异常InvalidCastException
一个表达式是数值数据类型,另一个表达式为 Nothing 添加值 Nothing 为零。
一个表达式是一个字符串,另一个表达式是 Nothing 连接,值 Nothing 为“”。

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

表达式的数据类型 按编译器执行的作
Object 表达式保存数值,另一个是数值数据类型 On如果是Option Strict,则生成编译器错误。

Off如果是Option Strict,则添加。
Object 表达式保存数值,另一个为类型 String On如果是Option Strict,则生成编译器错误。

Off如果是Option Strict,则隐式转换为StringDouble并添加。

如果无法转换为DoubleString对象,则引发异常InvalidCastException
Object 表达式保存字符串,另一个是数值数据类型 On如果是Option Strict,则生成编译器错误。

Off如果是Option Strict,则隐式将字符串ObjectDouble转换为并添加。

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

Off如果是Option Strict,则隐式转换为ObjectString并连接。

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

表达式的数据类型 按编译器执行的作
两个 Object 表达式都保存数值 添加。
这两个 Object 表达式的类型都是 String 连接。
Object 个表达式保存数值,另一个表达式保存字符串 将字符串ObjectDouble隐式转换为并添加。

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

如果任一Object表达式的计算结果为 Nothing,或DBNull+运算符将它视为String值为“”的表达式。

注释

使用 + 运算符时,可能无法确定是否会发生加法或字符串串联。 &使用运算符进行串联以消除歧义并提供自记录代码。

重载

+可以重载运算符,这意味着当作数具有该类或结构的类型时,类或结构可以重新定义其行为。 如果代码对此类或结构使用此运算符,请确保了解其重新定义的行为。 有关详细信息,请参阅 运算符过程

示例:

以下示例使用 + 运算符添加数字。 如果作数均为数值,则 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.

若要消除歧义,应使用 & 运算符而不是 + 串联。

另请参阅