加法运算符 - +
和 +=
内置整型和浮点数值类型、字符串类型以及委托类型支持 +
和 +=
运算符。
有关算术 +
运算符的信息,请参阅一元加和减运算符和算术运算符文章的加法运算符 + 部分。
字符串串联
当其中的一个操作数是字符串类型或两个操作数都是字符串类型时,+
运算符将其操作数的字符串表示形式(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# 语言规范的一元加运算符和加法运算符部分。