这行代码尝试将lambda表达式赋给LambaExpression类型化变量,
LambdaExpression expr = n => n;
Run Code Online (Sandbox Code Playgroud)
它失败并出现编译错误消息:
无法将lambda表达式转换为类型'System.Linq.Expressions.LambdaExpression',因为它不是委托类型
所以它需要是一个委托类型.从概念上讲,这对我来说似乎很奇怪,因为我可以LambdaExpression使用像这样的工厂方法构建一个实例.
来自MSDN的 Factory Lambda
LambdaExpression lambdaExpr = Expression.Lambda(
Expression.Add(
paramExpr,
Expression.Constant(1)
),
new List<ParameterExpression>() { paramExpr }
);
Run Code Online (Sandbox Code Playgroud)
那不是委托类型.
这让我们想知道为什么lambda到LambaExpression无法工作?