Partager via


Erreur du compilateur CS1940

Mise à jour : novembre 2007

Message d'erreur

Plusieurs implémentations du modèle de requête ont été détectées pour le type source 'type'. Appel ambigu à la méthode 'méthode'.
Multiple implementations of the query pattern were found for source type 'type'. Ambiguous call to 'method'.

Cette erreur est générée lorsque plusieurs implémentations d'une méthode de requête sont définies et que le compilateur ne parvient pas à savoir laquelle il doit utiliser pour la requête. Dans l'exemple suivant, les deux versions de Select ont la même signature car elles ont toutes deux accepté un int en tant que paramètre d'entrée et ont int pour valeur de retour.

Pour corriger cette erreur

  • Fournissez une seule implémentation par méthode.

Exemple

Le code suivant génère l'erreur 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;
    }
}

Voir aussi

Concepts

Vue d'ensemble des opérateurs de requête standard