c#中的lambda表达式和var关键字可能重复:为什么C#不能给var赋值一个匿名方法?我在c#Funcadd=(x,y)=>x+y;中有以下声明但是当我用以下varadd=(x,y)=>x+y;替换左侧的语句时我收到编译错误(无法将lambda表达式分配给隐式类型的局部变量)。为什么?因为编译器无法判断RHS的类型varadd=(x,y)=>x+y;任何支持+运算符的类型都是候选类型,因为x和y的类型不限于同一类型。+运算符出口有许多可能的用途,因此x和y的可能类型集相当大,但为了能够确定add的类型,编译器需要能够将集减少为只有一种类型x和类型y之一(不完全正确,可能基类和派生类都适合),即使编译器可以计算出x和y的类型,或者您指定了类型,假设您仍然知道这样一个事实Expression>和Func都是可能的添加类型对于如何减少可能类型的集合,有几个选项。编译器可能会尝试查看稍后如何使用add但不会(尽管它实际上可能无法确定类型)var关键字不起作用,因为lambda表达式用作委托和编译器不知道它应该转换为lambda。换句话说,以下类型对您的(x,y)=>x+ylambda有效:Func和Expression>。你得到的错误是因为编译器不知道x和y是什么类型。以上就是C#学习教程的全部内容:c#中的lambda表达式和var关键字。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
