fork download
  1. using System;
  2. using System.Linq.Expressions;
  3.  
  4. class Program
  5. {
  6. static void Main(string[] args)
  7. {
  8. Console.WriteLine(Add(10, 20));
  9. Console.WriteLine(Add(10L, 20L));
  10. Console.WriteLine(Add(10.0, 20.0));
  11. Console.ReadKey();
  12. }
  13.  
  14. static T Add<T>(T a, T b) where T : struct
  15. {
  16. var p1 = Expression.Parameter(typeof(T), "a");
  17. var p2 = Expression.Parameter(typeof(T), "b");
  18. var body = Expression.Add(p1, p2);
  19. var lambda = Expression.Lambda(body, new[] { p1, p2 });
  20. var compiled = (Func<T, T, T>)lambda.Compile();
  21. return compiled(a, b);
  22. }
  23. }
Success #stdin #stdout 0.04s 134656KB
stdin
Standard input is empty
stdout
30
30
30