+ 運算子 (Visual Basic)
將兩個數字相加或傳回一個數字運算式的正值。 也可以用來串連兩個字串運算式。
語法
expression1 + expression2
或
+expression1
組件
詞彙 | 定義 |
---|---|
expression1 |
必要。 任何的數字或字串運算式。 |
expression2 |
除非 + 運算子正在計算負值,否則為必要。 任何的數字或字串運算式。 |
結果
如果 expression1
和 expression2
都是數字,則結果會是其算術總和。
如果 expression2
不存在,那麼 +
運算子就是一元 (unary) 識別運算子,用於維持運算式的值不變。 在此情況下,運算就會包含保留 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 的值視為 0)。 |
一個運算式是字串,而另一個運算式是 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.
為了消除模棱兩可的情況,您應該使用 &
運算子 (而不是 +
) 來進行串連。