Läs på engelska

Dela via


Kompilatorfel CS0837

Den första operanden för operatorn "is" eller "as" kanske inte är ett lambda-uttryck, en anonym metod eller en metodgrupp.

Lambda-uttryck, anonyma metoder och metodgrupper får inte användas till vänster om is eller as.

Så här åtgärdar du det här felet

  • Om felet involverar operatorn is ska du komma ihåg att is tar ett värde och en typ och anger om värdet kan göras till den typen av referens, boxning eller avboxningskonvertering. Eftersom lambdas inte är värden och inte har någon referens, boxning eller avboxning av konverteringar är lambdas inte kandidater för is.

  • Om koden missbrukar askommer korrigeringen förmodligen att ändra den till en gjuten.

Exempel

I följande exempel genereras 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;
        }
    }
}