Ste*_*ger 13
不,不支持运算符覆盖.当子类继承一个方法并且子类用它自己的实现覆盖它时,使用术语Overriding.运算符在C#中都是静态的,不能被覆盖.
重载意味着定义了另一个具有相同名称但具有不同签名(参数)的方法.这就是你可以对运营商做的事情.
在C#中编写运算符时,这一点非常重要.运算符在编译时受到约束.在运行时传递给操作员的有效类型根本不重要.
例如.你写了一些比较运算符
public static bool operator==(MyClass c1, MyClass c2)
{
//...
}
Run Code Online (Sandbox Code Playgroud)
并具有以下代码:
object myObj1 = new MyClass();
object myObj2 = new MyClass();
if (myObj1 == myObj2)
//...
Run Code Online (Sandbox Code Playgroud)
对象的运算符将被调用,而不是您自己的运算符,因为参数是对象类型的引用.