小编kit*_*fan的帖子

嵌套调用LambdaExpression有错误吗?

我试图编译并计算LambdaExpression,如:

加(10,加号(1,2))

但结果是4,而不是13.

码:

using System;
using System.Linq.Expressions;

namespace CheckLambdaExpressionBug
{
    class Program
    {
        static void Main(string[] _args)
        {
            ParameterExpression p1 = Expression.Parameter(typeof (int), "p1");
            ParameterExpression p2 = Expression.Parameter(typeof (int), "p2");
            LambdaExpression lambda = Expression.Lambda(Expression.Call(typeof(Program).GetMethod("Plus"), p1, p2), p1, p2);

            InvocationExpression exp1 = Expression.Invoke(
                lambda,
                Expression.Constant(1),
                Expression.Constant(2)
                );

            InvocationExpression exp2 = Expression.Invoke(
                lambda,
                Expression.Constant(10),
                exp1
                );

            var func = (Func<int>) Expression.Lambda(exp2).Compile();

            int v = func();
            Console.Out.WriteLine("Result = {0}", v);
        }

        public static int Plus(int a, int b)
        {
            return a + …
Run Code Online (Sandbox Code Playgroud)

c# lambda

15
推荐指数
1
解决办法
519
查看次数

标签 统计

c# ×1

lambda ×1