加法运算符 - ++=

内置 整型浮点 数值类型、 字符串 类型和 委托 类型都支持 ++= 运算符。

有关算术+运算符的信息,请参阅算术运算符文章的一元加和减运算符加法运算符 + 部分。

字符串拼接

当一个或两个作数属于 字符串类型时, + 运算符将连接其作数的字符串表示形式(字符串表示形式 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# 11 开始, + 运算符对 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

还可以在订阅+=时使用运算符指定事件处理程序方法。 有关详细信息,请参阅如何:订阅和取消订阅事件

运算符可重载性

用户定义的类型可以重载+运算符。 重载< c0 />二元运算符时,< c1 />运算符也会隐式重载。 从 C# 14 开始,用户定义的类型可以显式重载 += 运算符以提供更高效的实现。 通常,类型重载 += 运算符,因为可以就地更新值,而不是分配新实例来保存添加的结果。 如果类型不提供显式重载,编译器将生成隐式重载。

C# 语言规范

有关详细信息,请参阅 C# 语言规范一元加运算符加法运算符部分。 有关在 C# 14 及更高版本中重载复合赋值运算符的详细信息,请参阅 用户定义的复合赋值 功能规范。

另请参阅