Предупреждение компилятора (уровень 1) CS0809
Устаревший член "членA" переопределяет неустаревший член "членB".
Обычно член, помеченный как устаревший, не должен переопределять член, который не помечен как устаревший. Это предупреждение создается в 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 — это проект с открытым исходным кодом. Выберите ссылку, чтобы оставить отзыв: