Baca dalam bahasa Inggris

Bagikan melalui


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.

Untuk memperbaiki kesalahan ini

Hapus atribut Obsolete dari anggota yang mengambil alih, atau tambahkan atribut tersebut ke anggota kelas dasar.

Contoh

C#
// CS0809.cs
public class Base
{
    public virtual void Test1()
    {
    }
}
public class C : Base
{
    [System.Obsolete()]
    public override void Test1() // CS0809
    {
    }
}

Metode yang dikenali sebagai usang

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 Basedasar , bukan kelas Derivedturunan :

C#
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.

Lihat juga