试过这篇文章
但有人能解释一下作者试图说的话吗?
答案 0 :(得分:2)
作者以非静态的方式对运营商重载的潜在特征进行了简单的成本/收益分析,并得出结论:收益并不能证明成本合理:您可以通过调度轻松模拟运营商实例重载的功能从静态重载运算符内部的虚方法。但是,让您在没有中间虚函数的情况下定义重载运算符的成本非常高:
2+c
可能是非法的,而c+2
可以)null
引用最后,作者指出,他们没有引入一个引入很多混乱而没有显着优势的功能,而是采用了更清晰的设计,可以扩展以提供相应级别的功能。
答案 1 :(得分:0)
公共是必要的,以便可以在课外访问它。 静态是必要的,因为没有在类的实例上调用它。
public class B {
public static B operator+(B b1, B b2) { return b1.Add(b2); }
protected virtual B Add(B b2) { // ...
对于上面的例子,我可以使用像b3 = b1 + b2
这样的代码,这里+运算符不会在B类的任何一个实例上调用,所以它需要是静态的。
希望这会有所帮助。