+ および += 演算子 (C# リファレンス)+ and += operators (C# reference)

+ 演算子は、組み込み数値型、文字列型、およびデリゲート型でサポートされています。The + operator is supported by the built-in numeric types, string type, and delegate types.

算術演算子 + については、「算術演算子 (C# リファレンス)」の記事の「単項プラス演算子と単項マイナス演算子」セクションと「加算演算子 +」セクションを参照してください。For information about the arithmetic + operator, see the Unary plus and minus operators and Addition operator + sections of the Arithmetic operators article.

文字列連結String concatenation

一方または両方のオペランドが文字列型の場合、+ 演算子によってそのオペランドの文字列表現が連結されます。When one or both operands are of type string, the + operator concatenates the string representations of its operands:

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

C# 6 以降、文字列補間という文字列を書式設定するより便利な方法が提供されます。Starting with C# 6, string interpolation provides a more convenient way to format strings:

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

デリゲートの組み合わせDelegate combination

同じデリゲート型のオペランドの場合、呼び出されると左側のオペランドを呼び出してから右側のオペランドを呼び出す新しいデリゲート インスタンスが + 演算子によって返されます。For operands of the same delegate type, the + operator returns a new delegate instance that, when invoked, invokes the left-hand operand and then invokes the right-hand operand. いずれかのオペランドが null の場合、+ 演算子によって別のオペランドの値が返されます (null でもある場合があります)。If any of the operands is null, the + operator returns the value of another operand (which also might be null). 次の例では、デリゲートが + 演算子と組み合わされるしくみを説明しています。The following example shows how delegates can be combined with the + operator:

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

デリゲートの削除を実行するには、- 演算子を使用します。To perform delegate removal, use the - operator.

デリゲート型の詳細については、デリゲートに関するページを参照してください。For more information about delegate types, see Delegates.

加算代入演算子 +=Addition assignment operator +=

次のような += 演算子を使用する式があるとしますAn expression using the += operator, such as

x += y

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

x = x + y

ただし、x が評価されるのは 1 回だけです。except that x is only evaluated once.

+= 演算子の使用例を次に示します。The following example demonstrates the usage of the += operator:

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

イベントをサブスクライブするとき、+= 演算子を使用してイベント ハンドラー メソッドを指定することもできます。You also use the += operator to specify an event handler method when you subscribe to an event. 詳細については、「方法: イベント サブスクリプションとサブスクリプションの解除」を参照してください。For more information, see How to: subscribe to and unsubscribe from events.

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

ユーザー定義型は + 演算子をオーバーロードできます。A user-defined type can overload the + operator. 2 項 + 演算子をオーバーロードすると、+= 演算子も暗黙的にオーバーロードされます。When a binary + operator is overloaded, the += operator is also implicitly overloaded. ユーザー定義型では、+= 演算子を明示的にオーバーロードできません。A user-defined type cannot explicitly overload the += operator.

C# 言語仕様C# language specification

詳細については、C# 言語仕様単項プラス演算子加算演算子に関するセクションを参照してください。For more information, see the Unary plus operator and Addition operator sections of the C# language specification.

関連項目See also