【发布时间】:2021-10-18 09:36:23
【问题描述】:
在 javascript 中我们可以像这样创建一个箭头函数:
let square= (a) => a * a;
然后像这样直接调用 let :
square(1, 2);
是否有使用 c# 执行类似操作的解决方案? 我试过了,但它给了我这个错误(无法推断委托类型)
var square = (x) => x * x;
【问题讨论】:
-
不,lambda 表达式本身没有类型。
-
你必须把
Func<int, int>或Func<double, double>甚至Func<decimal, decimal>,Func<int, double>作为labda的类型:var是不够的:所有这些可能的类型都不能是从(x) => x * x;推断 -
除了其他人提到的“类型信息不足”问题外,还有“这是
Expression还是代表?”在将 lambda 转换为可以存储在变量中的东西时必须解决的问题。