Прочитать на английском

Поделиться через


Ошибка компилятора CS0837

Первый операнды оператора is или as не может быть лямбда-выражением, анонимным методом или группой методов.

Лямбда-выражения, анонимные методы и группы методов не могут использоваться в левой части или как.

Исправление ошибки

  • Если ошибка включает оператор is , учтите, что is принимает значение и тип и пытается преобразовать значение к этому типу с помощью ссылки, упаковки-преобразования или распаковки-преобразования. Так как лямбда-выражения не являются значениями и к ним неприменимы ссылки, упаковки-преобразования и распаковки-преобразования, лямбда-выражения не являются кандидатами для 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;
        }
    }
}