加法运算符 -
内置 整型 和 浮点 数值类型、 字符串 类型和 委托 类型都支持 +
和 +=
运算符。
有关算术+
运算符的信息,请参阅算术运算符文章的一元加和减运算符和加法运算符 + 部分。
字符串拼接
当一个或两个作数属于 字符串类型时, +
运算符将连接其作数的字符串表示形式(字符串表示形式 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 及更高版本中重载复合赋值运算符的详细信息,请参阅 用户定义的复合赋值 功能规范。
另请参阅
- C# 运算符和表达式
- 如何连接多个字符串
- 事件
- 算术运算符
- - 和 -= 运算符