zoukankan      html  css  js  c++  java
  • Expression的烦恼

                var tar = Expression.Label(typeof(int));
                var p1=Expression.Parameter(typeof(int), "a");
                var p2 = Expression.Parameter(typeof(int), "b");
                var v1=Expression.Variable(typeof(int), "c");
                var v2 = Expression.Assign(v1, Expression.Constant(100));
                var b1=Expression.Add(p1, p2);
                var b2 = Expression.Add(b1, v2);
                var ret = Expression.Return(tar,b2);
                var lbl = Expression.Label(tar, Expression.Constant(0));
                var block=Expression.Block(new ParameterExpression[] { v1},v2,ret,lbl);
                Expression.Lambda<Func<int, int, int>>(block, p1, p2).CompileToMethod(addMethod);

    想用表达式实现public int Add(int a,int b){var c=100;return a+b+c;},结果觉发现写了这么多代码,真是花费不小啊。到了最后一步CompileToMethod又被坑了,addMethod必须是静态方法(总是失败,反编译发现),这是一个多么大的限制啊~不过仔细想想其实也有它的道理,没有上下文this。如果我是需要一个委托,干嘛费那么大事呢?

  • 相关阅读:
    耶鲁大学——斯金纳理论基础
    耶鲁大学——弗洛伊德(基础)
    for input 'WID' 报错
    选中当前行wid
    微信支付
    vue.js列表渲染项目实例
    批量删除
    DIV 局部刷新
    DIV块刷新
    CMD DOS命令
  • 原文地址:https://www.cnblogs.com/kingge/p/3654994.html
Copyright © 2011-2022 走看看