dka*_*man 21 c# c++ static language-design operator-overloading
为什么C#需要运算符重载是静态方法而不是成员函数(如C++)?(也许更具体地说:这个决定的设计动机是什么?)
Igo*_*aka 33
这里以极其痛苦的细节回答:
关于值类型和实例运算符还有另一个微妙的观点.静态运算符使这种代码成为可能:
class Blah {
int m_iVal;
public static Blah operator+ (Blah l, int intVal)
{
if(l == null)
l = new Blah();
l.m_iVal += intVal;
return l;
}
}
//main
Blah b = null;
b = b + 5;
Run Code Online (Sandbox Code Playgroud)
因此,即使引用为null,也可以调用运算符.例如,运营商不会这样.