Error del compilador CS1940
Actualización: noviembre 2007
Mensaje de error
Se encontraron varias implementaciones del modelo de consulta para el tipo de origen 'tipo'. Llamada ambigua a 'método'.
Multiple implementations of the query pattern were found for source type 'type'. Ambiguous call to 'method'.
Este error se genera cuando se definen varias implementaciones de un método de consulta y el compilador no puede distinguir cuál es mejor para utilizarla en la consulta. En el ejemplo siguiente, ambas versiones de Select tienen la misma firma, ya que ambas aceptan un valor int como parámetro de entrada y tienen int como valor devuelto.
Para corregir este error
- Proporcione sólo una implementación para cada método.
Ejemplo
El código siguiente genera el error CS1940:
// cs1940.cs
using System; //must include explicitly for types defined in 3.5
class Test
{
public delegate int Dele(int x);
int num = 0;
public int Select(Func<int, int> d)
{
return d(this.num);
}
public int Select(Dele d) // CS1940
{
return d(this.num) + 1;
}
public static void Main()
{
var q = from x in new Test()
select x;
}
}