为什么不能将匿名方法分配给隐式类型“Var”推断的变量?
考虑以下代码:
Func<string, bool> comparer = delegate(string value) { return value != "0"; };
此代码编译成功,因为 lambda 的推断类型表达式是一个 Func 委托。但是,以下代码无法编译:
var comparer = delegate(string value) { return value != "0"; };
在这种情况下,编译器无法推断 lambda 表达式的委托类型。这是因为可以推断出无限多种可能的委托类型,而编译器没有足够的上下文来确定要使用哪一种委托类型。
例如,lambda 表达式可以是 Func
要解决此问题,请显式指定 委托类型lambda 表达式:
var comparer = (Func<string, bool>)delegate(string value) { return value != "0"; };
通过此更改,代码将成功编译,并且lambda 表达式的推断类型将为 Func
以上是为什么在没有显式类型声明的情况下隐式类型变量('var')不能保存匿名方法?的详细内容。更多信息请关注PHP中文网其他相关文章!