Avviso del compilatore (livello 1) CS1957

Aggiornamento: novembre 2007

Messaggio di errore

Il membro 'name' esegue l'override di 'method'. In fase di esecuzione sono disponibili più candidati per l'override. Il metodo che verrà chiamato dipende dall'implementazione.
Member 'name' overrides 'method'. There are multiple override candidates at run-time. It is implementation dependent which method will be called.

I parametri del metodo che variano solo in base al fatto che sono ref o out non possono essere differenziati in fase di esecuzione.

Per evitare la visualizzazione di questo avviso

  • Assegnare a uno dei metodi un nome diverso o un numero di parametri diverso.

Esempio

Nel codice seguente viene generato l'errore 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;
    }
}