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, dassis
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 mitis
verwendet werden.Wenn im Code
as
falsch 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;
}
}
}