Error del compilador CS0121
Actualización: noviembre 2007
Mensaje de error
La llamada es ambigua entre los siguientes métodos o propiedades: 'método1' y 'método2'
The call is ambiguous between the following methods or properties: 'method1' and 'method2'
Debido a la conversión implícita, el compilador no pudo llamar a una forma de un método sobrecargado. Puede resolver este error de las siguientes maneras:
Especifique los parámetros del método de tal manera que una conversión implícita no pueda tener lugar.
Elimine todas las sobrecargas del método.
Convierta al tipo apropiado antes de llamar al método.
Ejemplo
El código siguiente genera el error 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
}
}
El ejemplo siguiente genera el error CS0121 en Microsoft Visual Studio 2008 pero no en 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();
}
}