Compiler-Generated Expression Trees
As mentioned in Chapter 20, lambda expressions have two representations. One is the equivalent to anonymous methods, causing the lambda expression to be translated into a piece of IL code that allows direct execution of its logic:
Func<int, int, int> f = (a, b) => (a + b) * 2;
This is the same as the following C# 2.0 fragment:
Func<int, int, int> f = delegate (int a, int b) { return (a + b) * 2; };
The preceding can be translated into a separate method that’s being referred to by the delegate:
Func<int, int, int> f = new Func<int, int, int>(MyExpression);...static int MyExpression(int a, int b) { return (a + b) * 2; }
However, when we assign the lambda expression to an Expression<T> ...
Get C# 5.0 Unleashed now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.