gpt4 book ai didi

C# 泛型——为什么 lambda 有效,而简单的方法却无效?

转载 作者:IT王子 更新时间:2023-10-29 04:50:14 26 4
gpt4 key购买 nike

我无法理解为什么 C# 编译器可以推断类型

Array.ConvertAll(new int[1], i => Convert.ToDouble(i));

但不是为了

Array.ConvertAll(new int[1], Convert.ToDouble);

前者似乎比后者更复杂。

有人能解释一下为什么会这样吗?

最佳答案

此(已存档)博客文章很好地涵盖了这个问题:http://blogs.msdn.com/b/ericlippert/archive/2007/11/05/c-3-0-return-type-inference-does-not-work-on-member-groups.aspx

总而言之,据我了解(链接是否会消失);这是 C# 3.0 中的一个有意识的设计决定,因为它不适合对方法组(您的第二个示例)执行类型推断。

我猜很多人不喜欢这样,所以这个问题已针对 C# 4.0(从 Visual Studio 2010 开始)解决;

“在 C# 4.0 中,当方法组可以明确地与从委托(delegate)推导的一组完全固定的参数类型相关联时,返回类型推断适用于方法组参数。一旦与方法组相关联的参数类型已知,则重载决议可以明确地确定方法组中的哪个方法是与委托(delegate)形式参数关联的方法;然后我们可以从特定方法到委托(delegate)返回类型进行返回类型推断。”

关于C# 泛型——为什么 lambda 有效,而简单的方法却无效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10843382/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com