Ошибка компилятора 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;
}
}