Lambdas

  • Provide delegates, Expression<T> where T is not a delegate type
  • Expression<T> where T is a delegate type.
  • ability to produce an object model for an expression: Expression<Func<int, bool>> greaterThanZero = value => value > 0;
  • Beneath the hood
ParameterExpression valueParam = Expression.Parameter(typeof(int), "value");
ConstantExpression constantZero = Expression.Constant(0);
BinaryExpression comparison = Expression.GreaterThan(valueParam, constantZero);
Expression<Func<int, bool>> greaterThanZero = Expression.Lambda<Func<int, bool>>(comparison, valueParam);