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;
    }
}

Vea también

Conceptos

Información general sobre operadores de consulta estándar