加算演算子 - ++=

+ 演算子と += 演算子は、組み込みの整数および浮動小数点型の数値型、文字列型、デリゲート型によってサポートされています。

算術演算子 + については、「算術演算子 (C# リファレンス)」の記事の「単項プラス演算子と単項マイナス演算子」セクションと「加算演算子 +」セクションを参照してください。

文字列連結

一方または両方のオペランドが文字列型の場合、+ 演算子によってそのオペランドの文字列表現が連結されます (null の文字列表現は空の文字列です)。

Console.WriteLine("Forgot" + "white space");
Console.WriteLine("Probably the oldest constant: " + Math.PI);
Console.WriteLine(null + "Nothing to add.");
// Output:
// Forgotwhite space
// Probably the oldest constant: 3.14159265358979
// Nothing to add.

文字列補間では、文字列を書式設定するより便利な方法が提供されます。

Console.WriteLine($"Probably the oldest constant: {Math.PI:F2}");
// Output:
// Probably the oldest constant: 3.14

C# 10 以降では、プレースホルダーに使用されるすべての式が定数文字列である場合も、文字列補間を使用して定数文字列を初期化できます。

C# 11 以降、+ 演算子は UTF-8 リテラル文字列の文字列連結を実行します。 この演算子は、2 つの ReadOnlySpan<byte> オブジェクトを連結します。

デリゲートの組み合わせ

同じデリゲート型のオペランドの場合、呼び出されると左側のオペランドを呼び出してから右側のオペランドを呼び出す新しいデリゲート インスタンスが + 演算子によって返されます。 いずれかのオペランドが null の場合、+ 演算子によって別のオペランドの値が返されます (null でもある場合があります)。 次の例では、デリゲートが + 演算子と組み合わされるしくみを説明しています。

Action a = () => Console.Write("a");
Action b = () => Console.Write("b");
Action ab = a + b;
ab();  // output: ab

デリゲートの削除を実行するには、- 演算子を使用します。

デリゲート型の詳細については、デリゲートに関するページを参照してください。

加算代入演算子 +=

次のような += 演算子を使用する式があるとします

x += y

上記の式は、次の式と同じです。

x = x + y

ただし、x が評価されるのは 1 回だけです。

+= 演算子の使用例を次に示します。

int i = 5;
i += 9;
Console.WriteLine(i);
// Output: 14

string story = "Start. ";
story += "End.";
Console.WriteLine(story);
// Output: Start. End.

Action printer = () => Console.Write("a");
printer();  // output: a

Console.WriteLine();
printer += () => Console.Write("b");
printer();  // output: ab

イベントをサブスクライブするとき、+= 演算子を使用してイベント ハンドラー メソッドを指定することもできます。 詳細については、「方法: イベント サブスクリプションとサブスクリプションの解除」を参照してください。

演算子のオーバーロード可/不可

ユーザー定義型は + 演算子をオーバーロードできます。 2 項 + 演算子をオーバーロードすると、+= 演算子も暗黙的にオーバーロードされます。 ユーザー定義型は、+= 演算子を明示的にオーバーロードできません。

C# 言語仕様

詳細については、C# 言語仕様単項プラス演算子加算演算子に関するセクションを参照してください。

関連項目