CS0835 de erro do compilador

Mensagem de erro

Não é possível converter lambda em uma árvore de expressões cujo argumento de tipo 'type' não é um tipo delegado.

Se uma expressão lambda é convertida em uma árvore de expressão, árvore de expressão deve ter um tipo delegado para seu argumento.Além disso, a expressão lambda deve ser conversível no tipo delegado.

Para corrigir este erro

  • Alterar o parâmetro de tipo de int um tipo de delegado, por exemplo Func<int,int>.

Exemplo

O exemplo a seguir gera CS0835:

// cs0835.cs
using System;
using System.Linq;
using System.Linq.Expressions;

public class C
{
    public static int Main()
    {
        Expression<int> e = x => x + 1; // CS0835

        // Try the following line instead.
       // Expression<Func<int,int>> e2 = x => x + 1;

        return 1;
    }
}