Erreur du compilateur CS0121
Mise à jour : novembre 2007
Message d'erreur
L'appel est ambigu entre les méthodes ou propriétés suivantes : 'méthode1' et 'méthode2'
The call is ambiguous between the following methods or properties: 'method1' and 'method2'
En raison d'une conversion implicite, le compilateur n'a pas été en mesure d'appeler une forme d'une méthode surchargée. Vous pouvez résoudre cette erreur des manières suivantes :
Spécifiez les paramètres de méthode de telle manière que la conversion implicite ne soit pas effectuée.
Retirez toutes les surcharges de la méthode.
Effectuez un cast en type approprié avant d'appeler la méthode.
Exemple
L'exemple suivant génère l'erreur CS0121 :
// 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
}
}
L'exemple suivant génère l'erreur CS0121 dans Microsoft Visual Studio 2008 mais pas dans 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();
}
}