aviso do compilador CS1957 (nível 1)

Mensagem de erro

Membro 'nome' substitui 'método'.Há vários candidatos de substituir em em time de execução.É dependente de implementação que método será chamado.

Parâmetros de método que variam de acordo com somente se elas são ref ou out não pode ser diferenciado em time de execução.

Para evitar este aviso

  • Oferecer um dos métodos a um outro nome ou número diferente de parâmetros.

Exemplo

O código a seguir gera CS1957:

// cs1957.cs
class Base<T, S>
{
    public virtual string Test(out T x) // CS1957
    {
        x = default(T);
        return "Base.Test";
    }
    public virtual void Test(ref S x) { }
}

class Derived : Base<int, int>
{
    public override string Test(out int x)
    {
        x = 0;
        return "Derived.Test";
    }

    static int Main()
    {
        int x;
        if (new Derived().Test(out x) == "Derived.Test")
            return 0;
        return 1;
    }
}