Expression的烦恼_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > Expression的烦恼

Expression的烦恼

 2014/4/9 20:45:26  Joe·Zhou  博客园  我要评论(0)
  • 摘要:vartar=Expression.Label(typeof(int));varp1=Expression.Parameter(typeof(int),"a");varp2=Expression.Parameter(typeof(int),"b");varv1=Expression.Variable(typeof(int),"c");varv2=Expression.Assign(v1,Expression.Constant(100));varb1=Expression.Add(p1,p2)
  • 标签: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。如果我是需要一个委托,干嘛费那么大事呢?

上一篇: 火星上的神秘亮光,是火星人在打招呼吗? 下一篇: 没有下一篇了!
发表评论
用户名: 匿名