Errore del compilatore CS1940

Aggiornamento: novembre 2007

Messaggio di errore

Trovate implementazioni multiple del modello di query per il tipo di origine 'tipo'. Chiamata ambigua a 'metodo'.
Multiple implementations of the query pattern were found for source type 'type'. Ambiguous call to 'method'.

Questo errore viene generato quando vengono definite più implementazioni di un metodo di query e il compilatore non può risolvere l'ambiguità e individuare la migliore da utilizzare per la query. Nell'esempio seguente entrambe le versioni di Select hanno la stessa firma, perché accettano un oggetto int come parametro di input e hanno int come valore restituito.

Per correggere l'errore

  • Fornire solo un'implementazione per ogni metodo.

Esempio

Nel codice seguente viene generato l'errore 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;
    }
}

Vedere anche

Concetti

Cenni preliminari sugli operatori di query standard