Операторы + и +=. Справочник по C#+ and += operators (C# reference)

Операторы + и += поддерживаются встроенными целыми числовыми типами и числовыми типами с плавающей запятой, а также строковым типом и типамиделегатов.The + and += operators are supported by the built-in integral and floating-point numeric types, the string type, and delegate types.

Сведения об арифметическом операторе + см. в разделе Операторы унарного плюса и минуса и Оператор сложения + в статье Арифметические операторы.For information about the arithmetic + operator, see the Unary plus and minus operators and Addition operator + sections of the Arithmetic operators article.

Объединение строкString concatenation

Если один или оба операнда имеют тип string, оператор + сцепляет строковые представления этих операндов (строковое представление null является пустой строкой):When one or both operands are of type string, the + operator concatenates the string representations of its operands (the string representation of null is an empty string):

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.

В C#, начиная с версии 6, реализован более удобный способ форматирования строк, который называется интерполяция строк: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

Объединение делегатовDelegate combination

Для операндов того же типа delegate оператор + возвращает новый экземпляр делегата, при вызове которого вызывается сначала левый, а затем правый операнд.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 вычисляется только один раз.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. При перегрузке бинарного оператора + неявно перегружается и соответствующий оператор +=.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