更新 : 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;
}
}