6.4.1 Permitted user-defined conversions
C# permits only certain user-defined conversions to be declared. In particular, it is not possible to redefine an already existing implicit or explicit conversion. A class or struct is permitted to declare a conversion from a source type
S to a target type
T only if all of the following are true:
Tare different types.
Tis the class or struct type in which the operator declaration takes place.
objector an interface-type.
Tis not a base class of
Sis not a base class of
The restrictions that apply to user-defined conversions are discussed further in Section 10.9.3.