<?xml version="1.0"?>
<ErrorDocumentation xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <ErrorName>CS0457</ErrorName>
  <Examples>
    <string>// CS0457: Ambiguous user defined conversions `A.implicit operator byte(A)' and `A.implicit operator sbyte(A)' when converting from 'A' to 'int'
// Line: 20

class A
{
	public static implicit operator ushort (A mask)
	{
		return 1;
	}

	public static implicit operator short (A mask)
	{
		return 2;
	}
}

class X
{
    static A a = null;
    static object o = -a;
}
</string>
    <string>// CS0457: Ambiguous user defined operators `D.implicit operator A(D)' and `C.implicit operator B(C)' when converting from `D' to `B'
// Line: 30

class A
{
}

class B : A
{
}

class C
{
	public static implicit operator B (C s)
	{
		return new B ();
	}
}

class D : C
{
	public static implicit operator A (D s)
	{
		return new B ();
	}

	public static void Main ()
	{
		D d = new D ();
		B b2 = (B) d;
	}
}
</string>
    <string>// CS0457: Ambiguous user defined operators `D.implicit operator D(System.Action)' and `D.explicit operator D(Foo)' when converting from `method group' to `D'
// Line: 25

using System;

public delegate void Foo ();

class D
{
	public static implicit operator D (Action d)
	{
		return new D ();
	}

	public static explicit operator D (Foo d)
	{
		return new D ();
	}
}

class Program
{
	static void Main()
	{
		D d = (D) Main;
	}
}
</string>
    <string>// CS0457: Ambiguous user defined conversions `A.implicit operator byte(A)' and `A.implicit operator sbyte(A)' when converting from 'A' to 'int'
// Line: 20

class A
{
	public static implicit operator sbyte (A mask)
	{
		return 1;
	}

	public static implicit operator byte (A mask)
	{
		return 2;
	}
}

class X
{
    static A a = null;
    static object o = ~a;
}
</string>
  </Examples>
</ErrorDocumentation>