Compilerfehler CS0121
Aktualisiert: November 2007
Fehlermeldung
Der Aufruf unterscheidet nicht eindeutig zwischen folgenden Methoden und Eigenschaften: "Methode1" und "Methode2"
The call is ambiguous between the following methods or properties: 'method1' and 'method2'
Aufgrund der impliziten Konvertierung konnte der Compiler eine Form einer überladenen Methode nicht aufrufen. Sie haben folgende Möglichkeiten, diesen Fehler zu vermeiden:
Geben Sie die Methodenparameter so an, dass keine implizite Konvertierung erforderlich ist.
Entfernen Sie alle Überladungen für die Methode.
Führen Sie vor dem Methodenaufruf die geeignete Typumwandlung durch.
Beispiel
Im folgenden Beispiel wird CS0121 generiert:
// CS0121.cs
public class C
{
void f(int i, double d)
{
}
void f(double d, int i)
{
}
public static void Main()
{
C c = new C();
c.f(1, 1); // CS0121
// try the following line instead
// c.f(1, 1.0);
// or
// c.f(1.0, 1);
// or
// c.f(1, (double)1); // cast and specify which method to call
}
}
Im folgenden Beispiel wird CS0121 in Microsoft Visual Studio 2008 erzeugt, aber nicht in Visual Studio 2005:
//CS0121_2.cs
class Program2
{
static int ol_invoked = 0;
delegate int D1(int x);
delegate T D1<T>(T x);
delegate T D1<T, U>(U u);
static void F(D1 d1) { ol_invoked = 1; }
static void F<T>(D1<T> d1t) { ol_invoked = 2; }
static void F<T, U>(D1<T, U> d1t) { ol_invoked = 3; }
static int Test001()
{
F(delegate(int x) { return 1; }); //CS0121
if (ol_invoked == 1)
return 0;
else
return 1;
}
static int Main()
{
return Test001();
}
}