Errore del compilatore CS1946

Aggiornamento: novembre 2007

Messaggio di errore

Impossibile convertire un'espressione di metodo anonimo in una struttura ad albero dell'espressione.
An anonymous method expression cannot be converted to an expression tree.

Un metodo anonimo rappresenta un insieme di istruzioni ma una struttura ad albero dell'espressione non deve contenere un'istruzione. Un metodo anonimo non può pertanto essere rappresentato da una struttura ad albero dell'espressione.

Per correggere l'errore

  • Impostare il metodo anonimo su un'espressione lambda.

Esempio

Nell'esempio seguente viene generato l'errore 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;
        }
    }

Vedere anche

Concetti

Strutture ad albero dell'espressione

Riferimenti

Metodi anonimi (Guida per programmatori C#)