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.
Verwijder het Obsolete
kenmerk uit het overschrijvende lid of voeg het toe aan het lid van de basisklasse.
// CS0809.cs
public class Base
{
public virtual void Test1()
{
}
}
public class C : Base
{
[System.Obsolete()]
public override void Test1() // CS0809
{
}
}
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.
.NET-feedback
.NET is een open source project. Selecteer een koppeling om feedback te geven: