首页 > 后端开发 > C++ > 为什么在没有显式类型声明的情况下隐式类型变量('var')不能保存匿名方法?

为什么在没有显式类型声明的情况下隐式类型变量('var')不能保存匿名方法?

Mary-Kate Olsen
发布: 2024-12-31 19:25:10
原创
596 人浏览过

Why Can't Implicitly Typed Variables ('var') Hold Anonymous Methods Without Explicit Type Declaration?

为什么不能将匿名方法分配给隐式类型“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 表达式可以是 Expression> 类型,它表示表达式树ではなく、委托型です。

要解决此问题,请显式指定 委托类型lambda 表达式:

var comparer = (Func<string, bool>)delegate(string value) {
    return value != "0";
};
登录后复制

通过此更改,代码将成功编译,并且lambda 表达式的推断类型将为 Func.

以上是为什么在没有显式类型声明的情况下隐式类型变量('var')不能保存匿名方法?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板