Error del compilador CS1946

Actualización: noviembre 2007

Mensaje de error

Una expresión de método anónimo no se puede convertir en un árbol de expresión.
An anonymous method expression cannot be converted to an expression tree.

Un método anónimo representa un conjunto de instrucciones, pero un árbol de expresión no debe contener una instrucción. Por lo tanto, un árbol de expresión no puede representar un método anónimo.

Para corregir este error

  • Cambie el método anónimo a una expresión lambda.

Ejemplo

El ejemplo siguiente genera el error CS1946:

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

    public delegate void D();

    class Test
    {
        static void Main()
        {
            Expression<D> tree = delegate() { }; //CS1946
            // Try using a lambda expression instead.
            // Expression<D> tree = (x) => x + 1;
        }
    }

Vea también

Conceptos

Árboles de expresiones

Referencia

Métodos anónimos (Guía de programación de C#)