Domanda

Qual è il massimo che può fare l'albero di espressione LINQ?

Può definire una classe? Che ne dici di un metodo, con tutti i nomi dichiarati, modificatori, tipo di parametro e tipo restituito?

Il programma deve sempre definire l'albero stesso? È possibile generare l'albero da un determinato file C #?

Dove posso trovare risorse per imparare a scrivere di base su Expression Tree e Expression Tree Visitor? (articoli e video saranno fantastici)

Grazie per coloro che sono in grado di aiutare ...

È stato utile?

Soluzione

In C # 3, gli alberi delle espressioni possono rappresentare espressioni . Da qui il nome. E sono ulteriormente limitati a un sottoinsieme di espressioni C #: nessuna espressione di assegnazione, nessuna espressione che coinvolge tipi di puntatore e così via.

Nelle librerie che verranno fornite con C # 4, abbiamo esteso l'albero delle espressioni libreria per supportare anche gli alberi delle istruzioni. Tuttavia, C # 4 NON tradurrà automaticamente un'istruzione-lambda in un "albero di istruzioni" "

Questa è una caratteristica ovvia e utile che semplicemente non abbiamo avuto il tempo di raggiungere per C # 4. Lo considereremo per ipotesi future versioni. Se hai uno scenario utente davvero eccezionale per gli alberi delle istruzioni, mi piacerebbe ascoltarlo.

L'ovvia ulteriore estensione a tutto ciò che è l'albero delle dichiarazioni, che rappresenterebbe le dichiarazioni di classe, le dichiarazioni di struttura e così via. Avere totale omoiconicità tra il linguaggio C # e la libreria dell'albero delle espressioni sarebbe fantastico. Consentirebbe tutti i tipi di scenari di metaprogrammazione interessanti. Ma ciò non accadrà presto, quindi non sperare. È più un mio sogno a lungo termine che potrebbe non accadere mai.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top