系列教程 · 2023年4月1日

C#基础教程——C#运算符重载

运算符重载

您可以重定义或重载 C# 中内置的运算符。因此,程序员也可以使用用户自定义类型的运算符。重载运算符是具有特殊名称的函数,是通过关键字 operator 后跟运算符的符号来定义的。与其他函数一样,重载运算符有返回类型和参数列表。

例如,请看下面的函数:

上面的函数为用户自定义的类 Box 实现了加法运算符(+)。它把两个 Box 对象的属性相加,并返回相加后的 Box 对象。

 

一、运算符重载的实现

下面的程序演示了完整的实现:

当上面的代码被编译和执行时,它会产生下列结果:

 

二、可重载和不可重载运算符

下表描述了 C# 中运算符重载的能力:

运算符 描述
+, -, !, ~, ++, — 这些一元运算符只有一个操作数,且可以被重载。
+, -, *, /, % 这些二元运算符带有两个操作数,且可以被重载。
==, !=, <><=>= 这些比较运算符可以被重载。
&&, \ \ 这些条件逻辑运算符不能被直接重载。
+=, -=, *=, /=, %= 这些赋值运算符不能被重载。
=, ., ?:, ->, new, is, sizeof, typeof 这些运算符不能被重载。

 

实例

针对上述讨论,让我们扩展上面的实例,重载更多的运算符:

当上面的代码被编译和执行时,它会产生下列结果: