Поделиться через


Ошибка компилятора CS0035

Обновлен: Ноябрь 2007

Сообщение об ошибке

Оператор "оператор" для операнда типа "тип" является неоднозначным
Operator 'operator' is ambiguous on an operand of type 'type'

Компилятору предоставлено несколько доступных преобразований, и ему не удается определить, какое преобразование использовать перед применением оператора. Дополнительные сведения см. в разделах Templated User Defined Conversions и Операторы преобразования (Руководство по программированию в C#).

Следующий пример приводит к созданию ошибки 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;
   }
}