gpt4 book ai didi

C# 3.0 Func/OrderBy 类型推断

转载 作者:太空狗 更新时间:2023-10-29 22:11:41 27 4
gpt4 key购买 nike

我今天使用 OrderBy 时遇到的奇怪情况:

Func<SomeClass, int> orderByNumber = 
currentClass =>
currentClass.SomeNumber;

然后:

someCollection.OrderBy(orderByNumber);

这很好,但我打算改为创建一个方法,因为它可能在 orderBy 以外的其他地方可用。

private int ReturnNumber(SomeClass currentClass)
{
return currentClass.SomeNumber;
}

现在,当我尝试将其插入 OrderBy 时:

someCollection.OrderBy(ReturnNumber);

它无法像我使用 Func 那样推断类型。在我看来,它们应该是相同的,因为方法本身像 Func 一样是“强类型”的。

旁注:我意识到我可以做到这一点:

Func<SomeClass, int> orderByNumber = ReturnNumber;

最佳答案

这也可能与 "return-type type inference" not working on Method Groups 有关.

本质上,在通用参数仅在输入位置的情况下(如 Where 的谓词),方法组转换工作正常。但在通用参数是返回类型(如 SelectOrderBy 投影)的情况下,编译器不会推断出适当的委托(delegate)转换。

关于C# 3.0 Func/OrderBy 类型推断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/269839/

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