我决定花一些黄金时间来学习更多关于表达式的知识。我正在尝试一个非常简单的练习,即添加两个数字。我遇到了一个很难搜索的异常。
这是我的代码
Expression<Func<int,int,int>> addExpr = (x, y) => x + y;
var p1 = Expression.Parameter(typeof(int), "p1");
var p2 = Expression.Parameter(typeof(int), "p2");
var lambda = Expression.Lambda<Func<int,int,int>>(addExpr, p1, p2); //<-here
var del = lambda.Compile();
var result = del(2,3); //expect 5
但这会引发 ArgumentException:“System.Func`3[System.Int32,System.Int32,System.Int32]”类型的表达式不能用于返回类型“System.Int32”
在上面指示的行。我做错了什么?