Прочитать на английском

Поделиться через


Ошибка компилятора CS1940

Обнаружено несколько реализаций шаблона запроса для типа источника "тип". Неоднозначный вызов метода "метод".

Эта ошибка возникает в том случае, если определено несколько реализаций метода запроса, и компилятор не может выбрать, какой из них лучше всего использовать для запроса. В следующем примере обе версии Select имеют одинаковые сигнатуры, так как они принимают одно значение int в качестве входного параметра и имеют int в качестве возвращаемого значения.

Исправление ошибки

  1. Предоставьте только одну реализацию для каждого метода.

Пример

Следующий код приводит к возникновению ошибки 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;  
    }  
}  

См. также