更新:2007 年 11 月

错误消息

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