Поделиться через


Операторы добавления — + и +=

Встроенные числовые типы, такие как целочисленные и с плавающей запятой, тип строки, и типы делегатов поддерживают операторы + и +=.

Справочные документы по языку C# описывают последнюю выпущенную версию языка C#. Она также содержит начальную документацию по функциям в общедоступных предварительных версиях для предстоящего языкового выпуска.

Документация определяет любую функцию, впервые представленную в последних трех версиях языка или в текущих общедоступных предварительных версиях.

Подсказка

Чтобы узнать, когда функция впервые появилась в C#, ознакомьтесь со статьей об истории версий языка C#.

Сведения об арифметическом операторе + см. в разделах Арифметических операторов плюса и минуса и операторов сложения + разделах арифметических операторов.

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

Если один или оба операнда имеют тип строкового , оператор + объединяет строковые версии своих операндов (строковое представление 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

Интерполяция строк позволяет инициализировать константную строку, если все выражения, используемые для заполнителей, также являются константными строками.

Оператор + выполняет объединение строк для строк UTF-8. Этот оператор объединяет два объекта ReadOnlySpan<byte>.

Комбинация делегатов

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

Спецификация языка C#

Дополнительные сведения см. в разделах унарного оператора плюс и оператора сложения спецификации языка C#. Дополнительные сведения о перегрузке операторов составных назначений в C# 14 и более поздних версиях см. в спецификации определяемой пользователем функции составного назначения .

См. также