Auf Englisch lesen

Freigeben über


Compilerwarnung (Stufe 1) CS0809

Der veraltete Member 'MemberA' überschreibt den nicht veralteten Member 'MemberB'.

In der Regel sollte ein als veraltet gekennzeichneter Member keinen Member überschreiben, der nicht als veraltet gekennzeichnet ist. Diese Warnung wird in Visual Studio 2008 generiert, aber nicht in Visual Studio 2005.

So beheben Sie diesen Fehler

Entfernen Sie das Obsolete -Attribut aus dem überschreibenden Member, oder fügen Sie es zum Basisklassenmember hinzu.

Beispiel

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

Als veraltet erkannte Methoden

Beachten Sie, dass die Compilerwarnmeldung CS0809 zu keiner CS0618-Warnung führen wird, wenn die veraltete Methode aufgerufen wird.
Im folgenden Beispiel gibt der Compiler keine Warnung darüber aus, dass die Methode Test veraltet ist, da sich die Deklaration, die der Compiler beim Aufrufen erkennt, in der Basisklasse Base und nicht in der abgeleiteten Klasse Derived befindet:

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
    }
}

Um dieses Problem zu beheben, fügen Sie der Basisklasse auch das Obsolete-Attribut hinzu.

Siehe auch