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