C#是否支持运算符重写

本文关键字:重写 运算符 支持 是否 | 更新日期: 2023-09-27 18:19:50

我参加了一次面试,被要求回答一个问题:

C#是否支持运算符重写?

我知道支持运算符重载,但我不知道是否要重写运算符。有可能吗?

C#是否支持运算符重写

否,不支持运算符重写。当一个方法被子类继承,并且子类用自己的实现重写它时,就会使用术语重写。运算符在C#中都是静态的,不能重写。

重载意味着定义了另一个具有相同名称但不同签名(参数)的方法。这就是运营商可以做的。

在C#中编写运算符时,这一点非常重要。运算符在编译时绑定。在运行时传递给运算符的有效类型根本不重要。

例如。你写了一些比较运算符

public static bool operator==(MyClass c1, MyClass c2)
{
  //...
}

并具有以下代码:

object myObj1 = new MyClass();
object myObj2 = new MyClass();
if (myObj1 == myObj2)
//...

对象的运算符将被调用,而不是您自己的运算符,因为自变量是对象类型的引用。