Ошибка компилятора CS1940
Обновлен: Ноябрь 2007
Сообщение об ошибке
Обнаружено несколько реализаций шаблона запроса для исходного типа "тип". Неоднозначный вызов метода "метод".
Multiple implementations of the query pattern were found for source type 'type'. Ambiguous call to 'method'.
Эта ошибка происходит в случае, когда определено несколько реализаций метода запроса и компилятор не может устранить неоднозначность и определить, какой метод лучше всего подходит для запроса. В следующем примере обе версии Select обладают одинаковой подписью, так как они принимают один входной параметр int и обладают возвращаемым значением int.
Исправление ошибки
- Предоставьте только одну реализацию для каждого метода.
Пример
Следующий код вызывает ошибку 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;
}
}