Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Ostrzeżenie kompilatora (poziom 1) CS0809

Przestarzałe składowe "memberA" zastępuje nieu przestarzały element członkowski "memberB".

Zazwyczaj element członkowski oznaczony jako przestarzały nie powinien zastępować elementu członkowskiego, który nie jest oznaczony jako przestarzały. To ostrzeżenie jest generowane w programie Visual Studio 2008, ale nie w programie Visual Studio 2005.

Aby poprawić ten błąd

Obsolete Usuń atrybut z zastępowanego elementu członkowskiego lub dodaj go do składowej klasy bazowej.

Przykład

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

Metody rozpoznawane jako przestarzałe

Należy pamiętać, że ostrzeżenie CS0809 kompilatora nie będzie prowadzić do ostrzeżenia CS0618 podczas wywoływania przestarzałej metody.
W poniższym przykładzie kompilator nie wyświetli ostrzeżenia o przestarzałej metodzieTest, ponieważ deklaracja rozpoznawana przez kompilator podczas wywoływania znajduje się w klasie bazowej , a nie o klasie BaseDerivedpochodnej :

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

Aby rozwiązać ten problem, dodaj również atrybut do klasy bazowej Obsolete .

Zobacz też