Lezen in het Engels

Delen via


Compilerwaarschuwing (niveau 1) CS0809

Verouderd lid lid 'memberA' overschrijft niet-verouderd lid 'memberB'.

Normaal gesproken moet een lid dat is gemarkeerd als verouderd, een lid dat niet als verouderd is gemarkeerd, niet overschrijven. Deze waarschuwing wordt gegenereerd in Visual Studio 2008, maar niet in Visual Studio 2005.

Deze fout corrigeren

Verwijder het Obsolete kenmerk uit het overschrijvende lid of voeg het toe aan het lid van de basisklasse.

Opmerking

// CS0809.cs
public class Base
{
    public virtual void Test1()
    {
    }
}
public class C : Base
{
    [System.Obsolete()]
    public override void Test1() // CS0809
    {
    }
}

Methoden die worden herkend als verouderd

Houd er rekening mee dat de compilerwaarschuwing CS0809 leidt tot geen CS0618 waarschuwing bij het aanroepen van de verouderde methode.
In het volgende voorbeeld compiler wordt niet gewaarschuwd dat de methode Test verouderd is, omdat de declaratie die wordt herkend door compiler bij aanroepen zich in de basisklasse bevindt Base, niet de afgeleide klasse Derived:

class Base
{
    public virtual void Test() {}
}

class Derived : Base
{
    [System.Obsolete()]
    public override void Test() { }
}

static class Program
{
    public static void Main()
    {
        Derived derived = new();
        b.Foo();    // No CS0618
    }
}

U kunt dit probleem oplossen door ook het kenmerk toe te voegen aan de Obsolete basisklasse.

Zie ook