编译器错误 CS0837
更新:2007 年 11 月
错误消息
“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;
}
}
}