The parameter of a unary operator must be the containing type
The method declaration for an operator overload must follow certain guidelines.
The following sample generates CS0562:
namespace x { public class iii { public static implicit operator int(iii x) { return 0; } public static implicit operator iii(int x) { return null; } public static iii operator +(int aa) // CS0562 // try the following line instead // public static iii operator +(iii aa) { return (iii)0; } public static void Main() { } } }