Baca dalam bahasa Inggris

Bagikan melalui


Kesalahan Pengompilasi CS0837

Operand pertama operator 'is' atau 'as' mungkin bukan ekspresi lambda, metode anonim, atau grup metode.

Ekspresi Lambda, metode anonim, dan grup metode mungkin tidak digunakan di sisi kiri is atau as.

Untuk memperbaiki kesalahan ini

  • Jika kesalahan melibatkan operator is, ingatlah bahwa is mengambil nilai dan jenis dan memberi tahu Anda apakah nilai dapat dibuat menjadi jenis tersebut dengan konversi referensi, boxing, atau unoboxing. Karena lambda bukan nilai dan tidak memiliki konversi referensi, boxing, atau unboxing, lambda bukanlah kandidat untuk is.

  • Jika kode menyalahgunakan as, koreksi mungkin akan mengubahnya menjadi konversi eksplisit.

Contoh

Contoh berikut menghasilkan CS0837:

// cs0837.cs
namespace TestNamespace
{
    public delegate void Del();

    class Test
    {
        static int Main()
        {
            bool b1 = (() => { }) is Del;   // CS0837
            bool b2 = delegate() { } is Del;// CS0837
            Del d1 = () => { } as Del;      // CS0837  
            Del d2 = delegate() { } as Del; // CS0837
            return 1;
        }
    }
}