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.
Entfernen Sie das Obsolete
-Attribut aus dem überschreibenden Member, oder fügen Sie es zum Basisklassenmember hinzu.
// CS0809.cs
public class Base
{
public virtual void Test1()
{
}
}
public class C : Base
{
[System.Obsolete()]
public override void Test1() // CS0809
{
}
}
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.
Feedback zu .NET
.NET ist ein Open Source-Projekt. Wählen Sie einen Link aus, um Feedback zu geben: