从C#5.0规范为什么不能在派生类中声明操作符来隐藏在基类中声明的操作符?
3.6签名和重载
...
操作者的签名由运营商的名称和每一个的类型的其形式参数,在 从左到右的顺序考虑。运营商的签名特别是 不包括结果类型。在基类中声明
...
10.10运营商
...
同其他成员一样,运营商正在通过派生类继承 。由于运算符声明总是要求 表示操作员被宣布为运营商的签名参加 类或结构,它是不可能在派生类中声明的 操作隐藏在 声明的操作基类。因此,新的修饰符从不需要,因此在运算符声明中不允许使用 。
- 第一款不说“的类或结构中 操作声明”是运营商签名的一部分。因此, 在第二段中,“运算符声明总是需要运算符声明参与运算符签名的类或 结构”的含义是什么?
- 这是否适用于运营商的签名,但不适用于方法的 签名?
- 如果“派生类 中声明的运算符不可能隐藏在基类中声明的运算符”,那么 方法有可能以及为什么?
谢谢。
不清楚......既然你无法匹配派生类中的基类操作符的签名你期望隐藏的发生如何? –
@Alexei:什么阻止你在这两个类中编写'static public bool operator <(Base b,Derived d)'? –
@BenVoigt好点...刚试过 - 不会抱怨隐藏,但在通话时变得模糊不清。 (不知道为什么一个人会明智地做到这一点) –