Дерева виразів 1
Дерева виразів є незмінними. Це означає, що якщо потрібно змінити дерево виразів, слід створити нове дерево виразів шляхом копіювання існуючого дерева, а потім змінити його. Можна використовувати відвідувача дерева виразів для проходу по існуючому дереву виразів. Додаткові відомості див. У розділах Практичний посібник. Реалізація обходу дерева вираження і Практичний посібник. Зміна дерев виразів.
Коли лямбда-вираз призначається змінної з типом Expression . компілятор відображає дерево виразів, що представляє лямбда-вираз. Наприклад, деякі стандартні методи операторів запиту, які визначені в класі Queryable. мають параметри з типом Expression . При виклику цих методів можна передати лямбда-вираз і компілятор згенерує дерево виразів.
Тип Expression надає метод Compile. який компілює код, який надається деревом виразів, в виконуваний делегат. Цей виконуваний код еквівалентний виконуваного коду, який би генерувався, якби лямбда-вираз було призначено типу делегата спочатку.
Тільки ті дерева виразів, які представляють функції, а саме Expression і його батьківський тип LambdaExpression. можуть бути скомпільовані в виконуваний код. Для виконання інших типів дерев виразів необхідно спочатку укласти їх в оболонку вузла LambdaExpression. Такий вираз LambdaExpression можна отримати, викликавши метод Lambda і передавши йому дерево виразів як аргумент.