Compilerfehler CS1940
Aktualisiert: November 2007
Fehlermeldung
Für den Quelltyp "Typ" wurden mehrere Implementierungen des Abfragemusters gefunden. Mehrdeutiger Aufruf von "Methode".
Multiple implementations of the query pattern were found for source type 'type'. Ambiguous call to 'method'.
Dieser Fehler wird ausgelöst, wenn mehrere Implementierungen einer Abfragemethode definiert wurden und der Compiler nicht entscheiden kann, welche sich am besten für die Abfrage eignet. Im folgenden Beispiel haben beide Versionen von Select dieselbe Signatur, da beide einen int als Eingabeparameter akzeptieren und int als Rückgabewert aufweisen.
So beheben Sie diesen Fehler
- Stellen Sie nur eine Implementierung für jede Methode bereit.
Beispiel
Durch den folgenden Code wird der Fehler CS1940 ausgelöst:
// 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;
}
}