Share via


+ 運算子 (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 的資料型別。 請參閱運算子結果的資料型別 (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 運算式評估為 NothingDBNull,則 + 運算子會將它視為值為 "" 的 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.

若要排除模稜兩可的情形,則應使用 & 運算子,而非 + 執行串連。

請參閱

參考

& 運算子 (Visual Basic)

串連運算子 (Visual Basic)

算術運算子 (Visual Basic)

運算子 (依功能排列) (Visual Basic)

Visual Basic 中的運算子優先順序

Option Strict 陳述式

概念

Visual Basic 的算術運算子