是否由C#支持运算符覆盖

शेख*_*ेखर 4 c# overriding

我去了一个采访,我被要求回答一个问题:

运算符覆盖是否受C#支持?

我知道支持运算符重载但我不知道覆盖运算符.可能吗?

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)

对象的运算符将被调用,而不是您自己的运算符,因为参数是对象类型的引用.