Error del compilador CS0035

Actualización: noviembre 2007

Mensaje de error

El operador 'operador' es ambiguo en un operando del tipo 'tipo'
Operator 'operator' is ambiguous on an operand of type 'type'

El compilador tiene más de una conversión disponible y no se le ha indicado cuál debe realizar antes de aplicar el operador. Para obtener más información, vea Templated User Defined Conversions y Operadores de conversión (Guía de programación de C#).

El código siguiente genera el error CS0035:

// CS0035.cs
class MyClass
{
   private int i;

   public MyClass(int i)
   {
      this.i = i;
   }

   public static implicit operator double(MyClass x)
   {
      return (double) x.i;
   }

   public static implicit operator decimal(MyClass x)
   {
      return (decimal) x.i;
   }
}

class MyClass2
{
   static void Main()
   {
      MyClass x = new MyClass(7);
      object o = - x;   // CS0035
      // try a cast:
      // object o = - (double)x;
   }
}