gpt4 book ai didi

c# - LambdaExpression 的嵌套调用是否存在错误?

转载 作者:可可西里 更新时间:2023-11-01 07:48:29 27 4
gpt4 key购买 nike

我尝试像这样编译和计算 LambdaExpression:

Plus(10, Plus(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 + b;
}
}
}

最佳答案

因为似乎没有人发布这个:

它看起来是 .NET 3.5 中的错误,并在 .NET 4 中修复。

关于c# - LambdaExpression 的嵌套调用是否存在错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3178122/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com