2 つの数値を追加するか、数値式の正の値を返します。 2 つの文字列式を連結するためにも使用できます。
構文
expression1 + expression2
又は
+expression1
部品
任期 | 定義 |
---|---|
expression1 |
必須。 任意の数値式または文字列式。 |
expression2 |
+ 演算子が負の値を計算している場合を除き、必須です。 任意の数値式または文字列式。 |
結果
expression1
とexpression2
の両方が数値の場合、結果は算術合計になります。
expression2
が存在しない場合、+
演算子は、式の変更されていない値の単項 ID 演算子です。 この意味では、操作は 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 |
連結。 |
1 つの式が数値データ型で、もう 1 つの式が文字列です |
Option Strict がOn 場合は、コンパイラ エラーを生成します。Option Strict がOff 場合は、String を暗黙的にDouble に変換して追加します。String をDouble に変換できない場合は、InvalidCastException例外をスローします。 |
1 つの式が数値データ型で、もう 1 つの式が Nothing です |
Nothing 値を 0 にして追加します。 |
一方の式は文字列で、もう 1 つは文字列です Nothing |
連結し、 Nothing 値を "" に設定します。 |
1 つの式が 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 式は数値を保持し、もう 1 つは文字列を保持します |
文字列 Object を Double に暗黙的に変換して追加します。文字列 Object を数値に変換できない場合は、 InvalidCastException 例外をスローします。 |
Object
式が Nothing または DBNull に評価された場合、+
演算子は値が "" のString
として扱います。
注
+
演算子を使用すると、加算または文字列連結が行われるかどうかを判断できないことがあります。 連結には、 &
演算子を使用してあいまいさを排除し、自己文書化コードを提供します。
オーバーロード
+
演算子はオーバーロードできます。つまり、オペランドがそのクラスまたは構造体の型を持つ場合、クラスまたは構造体はその動作を再定義できます。 コードでこのようなクラスまたは構造体でこの演算子を使用する場合は、再定義された動作を理解していることを確認してください。 詳細については、「 演算子プロシージャ」を参照してください。
例
次の例では、 +
演算子を使用して数値を追加します。 オペランドが両方とも数値の場合、Visual Basic は算術結果を計算します。 算術結果は、2 つのオペランドの合計を表します。
Dim sumNumber As Integer
sumNumber = 2 + 2
sumNumber = 4257.04 + 98112
' The preceding statements set sumNumber to 4 and 102369.
+
演算子を使用して文字列を連結することもできます。 オペランドが両方の文字列である場合、Visual Basic はそれらを連結します。 連結結果は、2 つのオペランドの内容から成る 1 つの文字列を 1 つずつ表します。
オペランドが混合型の場合、結果は 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.
あいまいさを排除するには、連結に+
の代わりに&
演算子を使用する必要があります。
こちらも参照ください
.NET