コンパイラの警告 (レベル 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
属性を追加します。
.NET に関するフィードバック
.NET はオープンソース プロジェクトです。 フィードバックを提供するにはリンクを選択します。