Implicit conversion from a commonly used type to another commonly used
type is discouraged because for the potential of unintended application.
Basically, some one tries to call a method, but gets the arguments wrong.
This would be caught as a trivial compile error, except that now the
implicit conversion steps in and makes the method call compile, but fail at
This can happen with non-overloaded methods, but if methods are
overloaded, the potential for this to happen it far greater.
Or the other scenario: you actually wanted a particular implicit
conversion to apply, but there is a second implicit conversion in scope
that fits, too, and then it does not compile due to ambiguity.
Implicit conversions are usually fine if you only use them to or from a
type you have created yourself, and if methods that take this type are
clearly distinguishable from methods that don’t.