fork download
  1. using System;
  2. using System.Linq.Expressions;
  3.  
  4.  
  5. namespace TestBench
  6. {
  7. class Program
  8. {
  9. static void Main(string[] args)
  10. {
  11. ParameterExpression innerX = Expression.Parameter(typeof(int), "innerX");
  12. ParameterExpression outerX = Expression.Parameter(typeof(int), "outerX");
  13.  
  14. //outerXとinnerXでInvokeを介してParameterの読み替えが起きている。
  15. var expression = Expression.Lambda<Func<int, int>>(
  16. Expression.Invoke(Expression.Lambda<Func<int, int>>(
  17. Expression.Add(innerX, innerX), innerX), outerX), outerX);
  18.  
  19. Console.WriteLine(expression.Compile()(10));
  20.  
  21. }
  22. }
  23. }
  24.  
Success #stdin #stdout 0.04s 38576KB
stdin
Standard input is empty
stdout
20