I've always wondered why people would want to override operators. It's one of those pet peeves of mine. Overriding an explicit cast operator might make sense, but why overload them when you can simply use them in a named method? To me it seems that simply having a named method "Foo.Add" is no less efficient than overriding the + operator.