使用英语阅读

通过


编译器错误 CS0837

“is”或“as”运算符的第一个操作数不能是 lambda 表达式、匿名方法或方法组。

Lambda 表达式、匿名方法和方法组不能在 isas的左侧使用。

更正此错误

  • 如果错误涉及 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;
        }
    }
}