旧形式のメンバー '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 属性を追加します。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
.NET