дерева виразів

Книга розрахована на широке коло Новомосковсктелей, хто цікавиться програмуванням на C # .Введіте сюди коротку анотацію
Книга: C # 4.0: повне керівництво
дерева виразів
Ще одним засобом, пов'язаним з LINQ, є дерево виразів, яке представляє лямбда-вираз у вигляді даних. Це означає, що саме лямбда-вираз можна виконати, але можна перетворити в виконувану форму. Дерева виразів инкапсулируются в класі System.Linq.Expressions.Expression
Для отримання виконуваної форми дерева виразів досить викликати метод Compile (). визначений у класі Expression. Цей метод повертає посилання, яка може бути присвоєна делегату для подальшого виконання. А тип делегата може бути оголошений власним або ж одним з визначених типів делегата Func в просторі імен System. Дві форми делегата Func вже згадувалися раніше при розгляді методів запиту, але існує і інші його форми.
Деревам виразів притаманне наступне суттєве обмеження: вони можуть представляти тільки поодинокі лямбда-вирази. З їх допомогою можна уявити блокові лямбда-вирази.
Нижче наведено приклад програми, що демонструє конкретне застосування дерева виразів. У цій програмі спочатку створюється дерево виразів, дані якого представляють метод, який визначає, чи є одне ціле число множником іншого. Потім це дерево виразів компілюється в виконуваний код. І нарешті, в цій програмі демонструється виконання скомпільованого коду.
Ось до якого результату приводить виконання цієї програми.
Число 5 є множником 10.
Число 7 не є множником 10.
Даний приклад програми наочно показує два основних етапи застосування дерева виразів. Спочатку в ній створюється дерево виразів за допомогою наступного оператора.
Expression
У цьому операторі конструюється уявлення лямбда-вирази в оперативній пам'яті. Як пояснювалося вище, це уявлення є по посиланню, що привласнюється делегату IsFactorExp. А в наступному операторі дані вирази перетворюються в виконуваний код.
Після виконання цього оператора делегат IsFactorExp може бути викликаний, щоб визначити, чи є одне ціле число множником іншого.
Зверніть також увагу на те, що