编译器错误 CS0837
“is”或“as”运算符的第一个操作数不能是 lambda 表达式、匿名方法或方法组。
Lambda 表达式、匿名方法和方法组不能在 is 或 as的左侧使用。
如果错误涉及
is
运算符,请记住,is
会采用一个值和一种类型,并会告诉你是否可以通过引用、装箱或取消装箱转换将该值转换为该类型。 由于 lambda 不是值并且没有引用、装箱或取消装箱转换,因此 lambda 不适用于is
。如果代码误用了
as
,则更正方法可能是将它更改为强制转换。
下面的示例生成 CS0837:
// 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;
}
}
}