The parameter and return type for ++ or -- operator must be the containing type
The method declaration for an operator overload must follow certain guidelines.
The following sample generates CS0559:
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 int operator ++(int aa) // CS0559 // try the following line instead // public static iii operator ++(iii aa) { return (iii)0; } public static void Main() { } } }