Share via


+ 運算子 (Visual Basic)

將兩個數字相加或傳回一個數字運算式的正值。 也可以用來串連兩個字串運算式。

語法

expression1 + expression2

+expression1  

組件

詞彙 定義
expression1 必要。 任何的數字或字串運算式。
expression2 除非 + 運算子正在計算負值,否則為必要。 任何的數字或字串運算式。

結果

如果 expression1expression2 都是數字,則結果會是其算術總和。

如果 expression2 不存在,那麼 + 運算子就是一元 (unary) 識別運算子,用於維持運算式的值不變。 在此情況下,運算就會包含保留 expression1 的正負號,因此如果 expression1 為負,則結果也會是負的。

如果 expression1expression2 都是字串,則結果會是其值的串連。

如果 expression1expression2 屬於混合類型,則所採取的動作取決於其類型、其內容,以及 Option Strict 陳述式的設定。 如需詳細資訊,請參閱「備註」中的表格。

支援的型別

所有數字類型,包括不帶正負號和浮點數類型及 DecimalString

備註

一般而言,+ 在可行的情況下會執行算術加法,而只有在兩個運算式都是字串時才進行串連。

如果兩個運算式都不是 Object,則 Visual Basic 會採取下列動作。

運算式的資料類型 編譯器所採取的動作
這兩個運算式都是數字資料類型 (SByteByteShortUShortIntegerUIntegerLongULongDecimalSingleDouble) [新增]。 結果資料類型是一個適於 expression1expression2 資料類型的數字類型。 請參閱運算子結果的資料類型中的「整數算術」表。
兩個運算式都屬於 String 類型 相串連。
一個運算式是數字資料類型,而另一個運算式是字串 如果 Option StrictOn,則會產生編譯器錯誤。

如果 Option StrictOff,則會隱含地將 String 轉換成 Double 並相加。

如果 String 無法轉換成 Double,則會擲出 InvalidCastException 的例外狀況。
一個運算式是數字資料類型,而另一個運算式是 Nothing 相加 (將 Nothing 的值視為 0)。
一個運算式是字串,而另一個運算式是 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.

為了消除模棱兩可的情況,您應該使用 & 運算子 (而不是 +) 來進行串連。

另請參閱