次の方法で共有


+ 演算子 (Visual Basic)

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

構文

expression1 + expression2

又は

+expression1  

部品

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

結果

expression1expression2の両方が数値の場合、結果は算術合計になります。

expression2が存在しない場合、+演算子は、式の変更されていない値の単項 ID 演算子です。 この意味では、操作は expression1の符号を保持することで構成されるため、 expression1 が負の場合、結果は負になります。

expression1expression2の両方が文字列の場合、結果は値の連結になります。

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

サポートされている型

符号なし、浮動小数点型、 DecimalStringなど、すべての数値型。

注釈

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

どちらの式も Objectでない場合、Visual Basic は次のアクションを実行します。

式のデータ型 コンパイラによるアクション
どちらの式も数値データ型 (SByteByteShortUShortIntegerUIntegerLongULongDecimalSingle、または Double) です。 追加します。 結果データ型は、 expression1expression2のデータ型に適した数値型です。 演算子の結果のデータ型の「整数算術」テーブルを参照してください。
どちらの式も型です String 連結。
1 つの式が数値データ型で、もう 1 つの式が文字列です Option StrictOn場合は、コンパイラ エラーを生成します。

Option StrictOff場合は、Stringを暗黙的にDoubleに変換して追加します。

StringDoubleに変換できない場合は、InvalidCastException例外をスローします。
1 つの式が数値データ型で、もう 1 つの式が Nothing です Nothing値を 0 にして追加します。
一方の式は文字列で、もう 1 つは文字列です Nothing 連結し、 Nothing 値を "" に設定します。

1 つの式が Object 式の場合、Visual Basic は次のアクションを実行します。

式のデータ型 コンパイラによるアクション
Object 式は数値を保持し、もう一方は数値データ型です Option StrictOn場合は、コンパイラ エラーを生成します。

Option StrictOffされている場合は、追加します。
Object 式は数値を保持し、もう一方は型です String Option StrictOn場合は、コンパイラ エラーを生成します。

Option StrictOff場合は、Stringを暗黙的にDoubleに変換して追加します。

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

Option StrictOffされている場合は、文字列Objectを暗黙的にDoubleに変換して追加します。

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

Option StrictOffされている場合は、暗黙的にObjectStringに変換して連結します。

両方の式が Object 式である場合、Visual Basic は次のアクションを実行します (Option Strict Off のみ)。

式のデータ型 コンパイラによるアクション
どちらの Object 式も数値を保持します 追加します。
どちらの Object 式も型です String 連結。
一方の Object 式は数値を保持し、もう 1 つは文字列を保持します 文字列 ObjectDouble に暗黙的に変換して追加します。

文字列 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 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.

あいまいさを排除するには、連結に+の代わりに&演算子を使用する必要があります。

こちらも参照ください