Ler em inglês

Compartilhar via


Erro do Compilador CS0837

O primeiro operando de um operador "is" ou "as" não pode ser uma expressão lambda, um método anônimo ou um grupo de métodos.

Expressões lambda, métodos anônimos e grupos de métodos podem não ser usados no lado esquerdo do is ou as.

Para corrigir este erro

  • Se o erro envolver o operador is, lembre-se de que is usa um valor e um tipo e informa se o valor pode ser feito nesse tipo por uma referência, boxe ou conversão de unboxing. Como lambdas não são valores e não têm conversões de referência, boxe ou unboxing, lambdas não são candidatos para is.

  • Se o código usar as incorretamente, a correção provavelmente será alterá-lo para uma conversão.

Exemplo

O exemplo a seguir gera o erro CS0837:

C#
// 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;
        }
    }
}