Операторы сложения — +
и +=
Операторы +
и +=
поддерживаются встроенными целыми числовыми типами и числовыми типами с плавающей запятой, а также строковым типом и типамиделегатов.
Сведения об арифметическом операторе +
см. в разделе Операторы унарного плюса и минуса и Оператор сложения + в статье Арифметические операторы.
Объединение строк
Если один или оба операнда имеют тип string, оператор +
сцепляет строковые представления этих операндов (строковое представление null
является пустой строкой):
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.
Интерполяция строк обеспечивает более удобный способ форматирования строк:
Console.WriteLine($"Probably the oldest constant: {Math.PI:F2}");
// Output:
// Probably the oldest constant: 3.14
Начиная с C# 10, можно использовать интерполяцию строк для инициализации константной строки, если все выражения, используемые для заполнителей, также являются константными строками.
Начиная с C# 11 оператор +
выполняет объединение строк для строк литералов UTF-8. Этот оператор объединяет два ReadOnlySpan<byte>
объекта.
Объединение делегатов
Для операндов того же типа delegate оператор +
возвращает новый экземпляр делегата, при вызове которого вызывается сначала левый, а затем правый операнд. Если какой-либо из операндов имеет значение null
, оператор +
возвращает значение другого операнда (это тоже может быть null
). Следующий пример демонстрирует объединение делегатов с помощью оператора +
:
Action a = () => Console.Write("a");
Action b = () => Console.Write("b");
Action ab = a + b;
ab(); // output: ab
Для удаления делегатов используйте оператор -
.
См. дополнительные сведения о типах делегатов.
Оператор присваивания сложения (+=)
Выражение, использующее оператор +=
, такое как
x += y
эквивалентно правилу
x = x + y
за исключением того, что x
вычисляется только один раз.
В следующем примере иллюстрируется использование оператора +=
.
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
Можно также использовать оператор +=
, который позволяет указать метод обработчика событий при подписке на событие. Дополнительные сведения см. в разделе Практическое руководство. Подписка и отмена подписки на события.
Возможность перегрузки оператора
Определяемый пользователем тип может перегружать оператор +
. При перегрузке бинарного оператора +
неявно перегружается и соответствующий оператор +=
. Определяемый пользователем тип не может явно перегружать +=
оператор.
Спецификация языка C#
См. дополнительные сведения об унарном операторе сложение и операторе сложения в спецификации языка C#.