編譯器警告 (層級 1) CS0809
過時的成員 'memberA' 會覆寫非過時的成員 'memberB'。
一般而言,標記為過時的成員不應該覆寫未標記為過時的成員。 此警告會在 Visual Studio 2008 中產生,但不會在 Visual Studio 2005 中產生。
從覆寫成員移除 Obsolete
屬性,或將其加入基底類別成員中。
// CS0809.cs
public class Base
{
public virtual void Test1()
{
}
}
public class C : Base
{
[System.Obsolete()]
public override void Test1() // CS0809
{
}
}
請注意,實際上在呼叫已淘汰的方法時,編譯器警告 CS0809
將導致沒有 CS0618
警告。
在下面的範例中,編譯器不會警告方法 Test
已淘汰,因為編譯器在呼叫時識別的宣告位於基底類別 Base
中,而不是衍生類別 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
}
}
若要修正此問題,請將 Obsolete
屬性新增至基底類別。