Operadores de adição – + e +=

Os operadores +e += são compatíveis com os tipos numéricos internos integrais e ponto flutuante, o tipo cadeia de caracteres e os tipos delegados.

Para obter informações sobre o operador + aritmético, consulte as seções Operadores de adição e subtração unários e Operador de adição + do artigo Operadores aritméticos.

Concatenação de cadeia de caracteres

Quando um ou ambos os operandos forem do tipo cadeia de caracteres, o operador + concatenará as representações de cadeia de caracteres de seus operandos (a representação de cadeia de caracteres de null é uma cadeia de caracteres vazia):

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.

A interpolação de cadeia de caracteres oferece uma maneira mais conveniente de formatar cadeias de caracteres:

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

A partir do C# 10, você pode usar a interpolação de cadeia de caracteres para inicializar uma cadeia de caracteres constante quando todas as expressões usadas para espaços reservados também são cadeias de caracteres constantes.

A partir do C# 11, o operador + executa a concatenação de cadeia de caracteres para cadeias de caracteres literais UTF-8. Esse operador concatena dois objetos ReadOnlySpan<byte>.

Combinação de delegados

Para operandos do mesmo tipo delegado, o operador + retorna uma nova instância de delegado que, quando invocada, chama o operando esquerdo e, em seguida, chama o operando direito. Se qualquer um dos operandos for null, o operador + retornará o valor de outro operando (que também pode ser null). O exemplo a seguir mostra como os delegados podem ser combinados com o operador +:

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

Para executar a remoção de delegado, use o operador -.

Para obter mais informações sobre tipos de delegado, veja Delegados.

Operador de atribuição de adição +=

Uma expressão que usa o operador +=, como

x += y

é equivalente a

x = x + y

exceto que x é avaliado apenas uma vez.

O exemplo a seguir demonstra o uso do operador +=:

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

Você também usará o operador += para especificar um método de manipulador de eventos ao assinar um evento. Para obter mais informações, confira Como assinar e cancelar a assinatura de eventos.

Capacidade de sobrecarga do operador

Um tipo definido pelo usuário pode sobrecarregar o operador +. Quando um operador + binário é sobrecarregado, o operador += também é implicitamente sobrecarregado. Um tipo definido pelo usuário não pode sobrecarregar explicitamente o operador +=.

Especificação da linguagem C#

Para obter mais informações, veja as seções Operador de adição unário e Operador de adição da Especificação de linguagem C#.

Confira também