+ 演算子 (Visual Basic)

2 つの数値を加算するか、数値式の正の値を返します。 2 つの文字列式の連結にも使用できます。

構文

expression1 + expression2

or

+expression1  

指定項目

用語 定義
expression1 必須です。 任意の数値または文字列の式。
expression2 + 演算子が負の値を計算する場合を除き、必須です。 任意の数値または文字列の式。

結果

expression1expression2 が両方とも数値の場合、結果はそれらの算術和になります。

expression2 がない場合、+ 演算子は、変更されていない式の値の "単項" 恒等演算子です。 この意味では、この演算は expression1 の符号を維持するため、expression1 が負の場合は、結果が負になります。

expression1expression2 が両方とも文字列の場合、結果はそれらの値の連結です。

expression1expression2 の型が混在している場合、実行される処理は、その型、内容、および Option Strict ステートメントの設定によって異なります。 詳細については、「Remarks」の表を参照してください。

サポートされている型

すべての数値型。これには、符号なしおよび浮動小数点の型、DecimalString が含まれます。

Remarks

一般に、+ は可能な場合は算術加算を実行し、両方の式が文字列である場合にのみ連結します。

どちらの式も Object でない場合、Visual Basic では次の処理が実行されます。

式のデータ型 コンパイラによる処理
両方の式が数値データ型 (SByteByteShortUShortIntegerUIntegerLongULongDecimalSingle、または Double) である 加算します。 結果のデータ型は、expression1 および expression2 のデータ型に適した数値型です。 「演算子の結果のデータ型」の「整数の算術演算」の表を参照してください。
両方の式の型が String である 連結します。
一方の式は数値データ型であり、もう一方は文字列である Option StrictOn である場合は、コンパイラ エラーが発生します。

Option StrictOff である場合は、StringDouble に暗黙的に変換して、加算します。

StringDouble に変換できない場合は、InvalidCastException 例外をスローします。
一方の式は数値データ型であり、もう一方は Nothing である Nothing を 0 と評価して加算します。
一方の式は文字列であり、もう一方は Nothing である Nothing を "" と評価して連結します。

一方の式が Object 式の場合、Visual Basic では次の処理が実行されます。

式のデータ型 コンパイラによる処理
Object 式は数値を保持し、もう一方は数値データ型である Option StrictOn である場合は、コンパイラ エラーが発生します。

Option StrictOff である場合は、加算します。
Object 式は数値を保持し、もう一方は String 型である Option StrictOn である場合は、コンパイラ エラーが発生します。

Option StrictOff である場合は、StringDouble に暗黙的に変換して、加算します。

StringDouble に変換できない場合は、InvalidCastException 例外をスローします。
Object 式は文字列を保持し、もう一方は数値データ型である Option StrictOn である場合は、コンパイラ エラーが発生します。

Option StrictOff である場合は、文字列 ObjectDouble に暗黙的に変換して、加算します。

文字列 ObjectDouble に変換できない場合は、InvalidCastException 例外をスローします。
Object 式は文字列を保持し、もう一方は String 型である Option StrictOn である場合は、コンパイラ エラーが発生します。

Option StrictOff である場合、ObjectString に暗黙的に変換して、連結します。

両方の式が Object 式の場合、Visual Basic は次の処理を実行します (Option Strict Off のみ)。

式のデータ型 コンパイラによる処理
両方の Object 式が数値を保持している 加算します。
両方の Object 式の型が String である 連結します。
一方の Object 式は数値を保持し、もう一方は文字列を保持している 文字列 ObjectDouble に暗黙的に変換して、加算します。

文字列 Object を数値に変換できない場合は、InvalidCastException 例外をスローします。

いずれかのObject 式が Nothing または DBNull と評価される場合、 + 演算子はそれを値が "" である String として扱います。

注意

+ 演算子を使用すると、加算と文字列連結のどちらが発生するか判断できない可能性があります。 連結には & 演算子を使用してあいまいさをなくし、自己文書化コードを実現してください。

オーバーロード

+ 演算子は "オーバーロード" できます。つまり、オペランドがクラスまたは構造体の型を持っているときに、クラスまたは構造体はその動作を再定義できます。 コードで、そのようなクラスまたは構造体に対してこの演算子が使用される場合は、再定義された動作を理解していることを確認してください。 詳細については、「 Operator Procedures」を参照してください。

次の例では、+ 演算子を使用して数値を加算します。 オペランドが両方とも数値の場合、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 つの文字列を表します。

オペランドの型が混在する場合、結果は 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.

あいまいさをなくすために、連結には、+ の代わりに & 演算子を使用してください。

関連項目