Číst v angličtině

Sdílet prostřednictvím


Upozornění kompilátoru (úroveň 1) CS0809

Zastaralý člen member 'memberA' přepisuje zastaralého člena 'memberB'.

Člen, který je označen jako zastaralý, by obvykle neměl přepsat člen, který není označen jako zastaralý. Toto upozornění se vygeneruje v sadě Visual Studio 2008, ale ne v sadě Visual Studio 2005.

Oprava této chyby

Obsolete Odeberte atribut z přepsáného členu nebo ho přidejte do člena základní třídy.

Příklad

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

Metody rozpoznané jako zastaralé

Všimněte si, že upozornění CS0809 kompilátoru povede k žádnému CS0618 upozornění při skutečném volání zastaralé metody.
V následujícím příkladu kompilátor nebude varovat o zastaralé metodě Test , protože deklarace, která je rozpoznána kompilátorem při volání je v základní třídě Base, nikoli odvozené třídy Derived:

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

Pokud chcete tento problém vyřešit, přidejte Obsolete také atribut do základní třídy.

Viz také