Ler em inglês

Partilhar via


Erro do compilador CS1940

Várias implementações do padrão de consulta foram encontradas para o tipo de fonte 'tipo'. Apelo ambíguo ao "método".

Este erro é gerado quando várias implementações de um método de consulta são definidas e o compilador não pode desambiguar qual é o melhor para usar para a consulta. No exemplo a seguir, ambas as versões do Select têm a mesma assinatura, porque ambas aceitam uma int como um parâmetro de entrada e têm int como um valor de retorno.

Para corrigir este erro

  1. Forneça apenas uma implementação para cada método.

Exemplo

O código a seguir gera 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;  
    }  
}  

Consulte também