閱讀英文

共用方式為


編譯器警告 (層級 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 屬性新增至基底類別。

另請參閱