Peringatan Pengompilasi (tingkat 1) CS0809
Anggota usang 'memberA' mengambil alih anggota 'memberB' yang tidak usang.
Biasanya, anggota yang ditandai sebagai usang tidak boleh mengambil alih anggota yang tidak ditandai sebagai usang. Peringatan ini dibuat pada Visual Studio 2008 tetapi tidak pada Visual Studio 2005.
Hapus atribut Obsolete
dari anggota yang mengambil alih, atau tambahkan atribut tersebut ke anggota kelas dasar.
// CS0809.cs
public class Base
{
public virtual void Test1()
{
}
}
public class C : Base
{
[System.Obsolete()]
public override void Test1() // CS0809
{
}
}
Perhatikan bahwa peringatan CS0809
kompilator tidak akan menyebabkan CS0618
peringatan ketika benar-benar memanggil metode usang.
Dalam contoh kompilator berikut tidak akan memperingatkan tentang metode Test
yang usang, karena deklarasi yang dikenali oleh pengkompilasi saat memanggil berada di kelas Base
dasar , bukan kelas Derived
turunan :
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
}
}
Untuk memperbaikinya, tambahkan atribut ke Obsolete
kelas dasar juga.
Umpan balik .NET
.NET adalah proyek sumber terbuka. Pilih tautan untuk memberikan umpan balik: