Why does C# require operator overloads to be static methods rather than member functions (like C++)? (Perhaps more specifically: what was the design motivation for this decision?)
Answered in excruciating detail here:
http://blogs.msdn.com/ericlippert/archive/2007/05/14/why-are-overloaded-operators-always-static-in-c.aspx
There is also another subtler point about value types and instance operators. Static operators make this kind of code possible:
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;
So you can invoke the operator, even though the reference is null. This wouldn't be the case for instance operators.
2.1m questions
2.1m answers
60 comments
57.0k users