C#是否支持运算符重写
本文关键字:重写 运算符 支持 是否 | 更新日期: 2023-09-27 18:19:50
我参加了一次面试,被要求回答一个问题:
C#是否支持运算符重写?
我知道支持运算符重载,但我不知道是否要重写运算符。有可能吗?
否,不支持运算符重写。当一个方法被子类继承,并且子类用自己的实现重写它时,就会使用术语重写。运算符在C#中都是静态的,不能重写。
重载意味着定义了另一个具有相同名称但不同签名(参数)的方法。这就是运营商可以做的。
在C#中编写运算符时,这一点非常重要。运算符在编译时绑定。在运行时传递给运算符的有效类型根本不重要。
例如。你写了一些比较运算符
public static bool operator==(MyClass c1, MyClass c2)
{
//...
}
并具有以下代码:
object myObj1 = new MyClass();
object myObj2 = new MyClass();
if (myObj1 == myObj2)
//...
对象的运算符将被调用,而不是您自己的运算符,因为自变量是对象类型的引用。