Operatori + e += (Riferimenti per C#)+ and += operators (C# reference)

Gli operatori + e += sono supportati dai tipi numerici integrali e a virgola mobile incorporati, dal tipo di stringa e dai tipi delegati .The + and += operators are supported by the built-in integral and floating-point numeric types, the string type, and delegate types.

Per informazioni sull'operatore aritmetico +, vedere le sezioni Operatori più e meno unari e Operatore di addizione + dell'articolo Operatori aritmetici.For information about the arithmetic + operator, see the Unary plus and minus operators and Addition operator + sections of the Arithmetic operators article.

Concatenazione di stringheString concatenation

Quando uno o entrambi gli operandi sono di tipo stringa, l'operatore + concatena le rappresentazioni di stringa dei due operandi: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

A partire C# da 6, l' interpolazione di stringhe rappresenta un modo più pratico per formattare le stringhe:Beginning 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

Combinazione di delegatiDelegate combination

Per gli operandi con lo stesso tipo delegato, l'operatore + restituisce una nuova istanza di delegato che, quando viene chiamata, richiama l'operando di sinistra e quindi quello di destra.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. Se uno degli operandi è null, l'operatore + restituisce il valore di un altro operando, che può essere anch'esso null.If any of the operands is null, the + operator returns the value of another operand (which also might be null). L'esempio seguente mostra in che modo è possibile combinare delegati con l'operatore +: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

Per eseguire la rimozione dei delegati, usare l'operatore -.To perform delegate removal, use the - operator.

Per altre informazioni sui tipi delegate, vedere Delegati.For more information about delegate types, see Delegates.

Operatore di assegnazione di addizione +=Addition assignment operator +=

Un'espressione che usa l'operatore +=, ad esempioAn expression using the += operator, such as

x += y

equivale ais equivalent to

x = x + y

con la differenza che x viene valutato una sola volta.except that x is only evaluated once.

Nell'esempio seguente viene illustrato l'uso dell'operatore +=: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

È anche possibile usare l'operatore += per specificare un metodo del gestore eventi quando si sottoscrive un evento.You also use the += operator to specify an event handler method when you subscribe to an event. Per altre informazioni, vedere Procedura: Sottoscrivere e annullare la sottoscrizione di eventi.For more information, see How to: subscribe to and unsubscribe from events.

Overload degli operatoriOperator overloadability

Un tipo definito dall'utente può eseguire l'overload dell'operatore +.A user-defined type can overload the + operator. Quando viene eseguito l'overload di un operatore + binario, viene eseguito in modo implicito anche l'overload dell'operatore +=.When a binary + operator is overloaded, the += operator is also implicitly overloaded. Un tipo definito dall'utente non può eseguire l'overload dell'operatore += in modo esplicito.A user-defined type cannot explicitly overload the += operator.

Specifiche del linguaggio C#C# language specification

Per altre informazioni, vedere le sezioni Operatore + unario e Operatore addizione della specifica del linguaggio C#.For more information, see the Unary plus operator and Addition operator sections of the C# language specification.

Vedere ancheSee also