arg=>arg + 1

    class Program
    {
        static void Main(string[] args)
        {
            Expression<Func<int, int>> exp = arg => arg + 1;
            Console.WriteLine(exp.Compile()(11)); // 11
            Console.ReadKey();
        }
    }

1、LambdaExpression继承自Expression,LambdaExpression的表现形式是Expression<Fun<>>或者Expression<Action<>>。

2、LambdaExpression可以通过Expression.Lambda()生成。

3、LambdaExpression可以通过Compile()函数转换成Fun<>,但是Fun<>只能被调用,不可以转换成LambdaExpression。

LambdaExpression.Compile()(arg)调用,其中LambdaExpression.Compile()就是Fun<>,而arg就是Fun<>委托的参数。

    class Program
    {
        static void Main(string[] args)
        {
            Expression<Func<int, int, int>> exp = (arg, arg1) => arg * 10 + arg1;
            Func<int, int, int> func = exp.Compile();
            Console.WriteLine(func(2, 8)); // 28
            Console.ReadKey();
        }
    }

 

posted @ 2015-12-10 13:22  江境纣州  阅读(22)  评论(0编辑  收藏  举报