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.
Obsolete
Usuń atrybut z zastępowanego elementu członkowskiego lub dodaj go do składowej klasy bazowej.
// CS0809.cs
public class Base
{
public virtual void Test1()
{
}
}
public class C : Base
{
[System.Obsolete()]
public override void Test1() // CS0809
{
}
}
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 Base
Derived
pochodnej :
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
.
Opinia o produkcie .NET
.NET to projekt typu open source. Wybierz link, aby przekazać opinię: