Partilhar via


Operadores de adição - + e +=

Os tipos numéricos integrais incorporados e de ponto flutuante, o tipo string e os tipos delegados todos suportam os operadores + e +=.

A referência da linguagem C# documenta a versão mais recentemente lançada da linguagem C#. Contém também documentação inicial para funcionalidades em versões preliminares públicas para a próxima versão da linguagem.

A documentação identifica qualquer funcionalidade introduzida pela primeira vez nas últimas três versões da língua ou em pré-visualizações públicas atuais.

Sugestão

Para saber quando uma funcionalidade foi introduzida pela primeira vez em C#, consulte o artigo sobre o histórico de versões da linguagem C#.

Para obter informações sobre o operador aritmética +, consulte as seções de operadores unários de mais e menos e de (Operador de adição +) do artigo de Operadores aritméticos.

Concatenação de cordas

Quando um ou ambos os operandos são do tipo cadeia de caracteres, o operador + concatena 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.

Interpolação de cadeias de caracteres fornece 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

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.

O + operador realiza a concatenação de cadeias para cadeias literais UTF-8. Este operador concatena dois objetos ReadOnlySpan<byte>.

Combinação de delegados

Para operandos do mesmo tipo de delegado , o + operador devolve uma nova instância de delegado que, quando invocada, chama o operando da esquerda e depois chama o operando da direita. Se algum dos operandos for null, o + operador devolve o valor do outro operando (que também pode ser null). O exemplo seguinte mostra como os delegados podem ser combinados usando o + operador:

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

Para remover um delegado, use o - operador.

Para obter mais informações sobre tipos de delegados, consulte Delegados.

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

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

x += y

É equivalente a:

x = x + y

Só que x só é avaliada 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 usa o operador += para especificar um método de manipulador de eventos quando subscreve um evento . Para obter mais informações, consulte Como inscrever e cancelar a assinatura de eventos.

Capacidade de sobrecarga do operador

Um tipo definido pelo usuário pode sobrecarregar o operador +. Quando sobrecarregas um operador binário + , também sobrecarregas implicitamente o += operador. A partir de C# 14, um tipo definido pelo utilizador pode explicitamente sobrecarregar o += operador para proporcionar uma implementação mais eficiente. Normalmente, um tipo sobrecarrega o += operador porque o valor pode ser atualizado no local, em vez de alocar uma nova instância para armazenar o resultado da adição. Se um tipo não fornecer uma sobrecarga explícita, o compilador gerará a sobrecarga implícita.

Especificação da linguagem C#

Para obter mais informações, consulte as seções Unary plus operator e Addition operator da de especificação da linguagem C#. Para obter mais informações sobre como sobrecarregar os operadores de atribuição composta em C# 14 e posteriores, consulte a especificação do recurso de atribuição composta definida pelo usuário .

Ver também