Przeczytaj w języku angielskim

Udostępnij za pośrednictwem


Błąd kompilatora CS0837

Pierwszy operand operatora "is" lub "as" może nie być wyrażeniem lambda, metodą anonimową lub grupą metod.

Wyrażenia lambda, metody anonimowe i grupy metod mogą nie być używane po lewej stronie obiektu lubjako.

Aby poprawić ten błąd

  • Jeśli błąd obejmuje is operator, pamiętaj, że is przyjmuje wartość i typ i informuje, czy wartość może zostać wprowadzona do tego typu za pomocą odwołania, pola lub konwersji rozpakowej. Ponieważ wyrażenia lambda nie są wartościami i nie mają żadnych odwołań, boksu ani konwersji rozpętłania, lambdy nie są kandydatami do is.

  • Jeśli kod jest niewłaściwy as, korekta prawdopodobnie zmieni go na rzutowanie.

Przykład

Poniższy przykład generuje CS0837:

C#
// 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;
        }
    }
}