Freigeben über


Compilerfehler CS0837

Aktualisiert: November 2007

Fehlermeldung

Der erste Operand zum Operator "is" oder "as" darf kein Lambda-Ausdruck und keine anonyme Methode sein.
The first operand of an "is" or "as" operator may not be a lambda expression or anonymous method.

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

So beheben Sie diesen Fehler

  • Falls der Fehler bei einem is-Operator auftritt, denken Sie daran, 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 Lambdas keine Werte sind und keine Verweis-, Boxing- oder Unboxing-Konvertierung aufweisen, können Lambdas nicht mit is verwendet werden.

  • Falls im Code as falsch verwendet wird, ist die beste Lösung wahrscheinlich die Änderung in eine Umwandlung.

Beispiel

Durch das folgende Beispiel wird der Fehler CS0837 ausgelöst:

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