Freigeben über


Compilerfehler CS0837

Der erste Operand des „is“- oder „as“-Operators darf kein Lambdaausdruck, keine anonyme Methode und keine Methodengruppe sein.

Lambda-Ausdrücke, anonyme Methoden und Methodengruppen dürfen nicht auf der linken Seite von is oder as verwendet werden.

So beheben Sie diesen Fehler

  • Wenn der Fehler bei einem is -Operator auftritt, müssen Sie bedenken, dass is einen Wert und einen Typ annimmt und Ihnen mitteilt, ob der Wert mittels Verweis-, Boxing- oder Unboxing-Konvertierung in diesen Typ umgewandelt werden kann. Da Lambda-Ausdrücke keine Werte sind und keine Verweis-, Boxing- oder Unboxing-Konvertierungen aufweisen, können Lambda-Ausdrücke nicht mit isverwendet werden.

  • Wenn im Code asfalsch verwendet wird, ist die beste Lösung wahrscheinlich die Änderung in eine Umwandlung.

Beispiel

Im folgenden Beispiel wird CS0837 generiert:

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