更新:2007 年 11 月

错误消息

运算符“operator”对于“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;
   }
}