Advertencia del compilador (nivel 1) CS1957

Actualización: noviembre 2007

Mensaje de error

El miembro 'name' invalida 'method'. Hay varios candidatos a la invalidación en tiempo de ejecución. El método que recibirá la llamada depende de la implementación.
Member 'name' overrides 'method'. There are multiple override candidates at run-time. It is implementation dependent which method will be called.

Los parámetros del método que sólo varían en si son ref u out no se pueden diferenciar en tiempo de ejecución.

Para evitar esta advertencia

  • Dé a uno de los métodos un nombre o un número de parámetros diferente.

Ejemplo

El código siguiente genera el error 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;
    }
}