【发布时间】:2011-10-17 09:03:44
【问题描述】:
我在 c# 中有以下语句
Func <int, int, int> add = (x, y) => x + y;
但是当我用下面的替换左侧语句时
var add = (x, y) => x + y;
我收到编译器错误(无法将 lambda 表达式分配给隐式类型的局部变量)。为什么?
【问题讨论】:
-
可能是因为无法确定 x 和 y 是
ints。在有关它的问题中包含完整的错误消息总是有用的。 -
因为需要指定参数的类型,以及返回类型
-
酷,当您尝试将表达式树存储在 var 类型的变量中时,这似乎是一个问题。有道理,因为表达式树是在执行时评估的……但真的很酷。 ;)
-
@Rob 即使您指定 x 和 y 的类型(返回类型由表达式隐式给出),您仍然会得到“无法将 lambda 表达式分配给隐式类型变量”