why do we declare overloaded operators as `static` methods? - C#