+ 和 += 运算符(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

从 C# 10 开始,当用于占位符的所有表达式也是常量字符串时,可以使用字符串内插来初始化常量字符串。

从 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

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

运算符可重载性

用户定义的类型可以重载+ 运算符。 重载二元 + 运算符后,也会隐式重载 += 运算符。 用户定义类型不能显式重载 += 运算符。

C# 语言规范

有关详细信息,请参阅C# 语言规范一元加运算符加法运算符部分。

请参阅