Leer en inglés

Compartir a través de


Advertencia del compilador (nivel 1) CS1957

El miembro 'name' invalida 'method'. Hay varios candidatos de invalidación en tiempo de ejecución. El método que se llamará depende de la implementación.

No se pueden diferenciar en tiempo de ejecución los parámetros de método que solo varían por que sean ref o out .

Para evitar esta advertencia

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

Ejemplo

El código siguiente genera el error CS1957:

C#
// 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;  
    }  
}