fre*_*eak 3 c# linq lambda delegates c#-3.0
static void Main()
{
string[] a = { "a", "asd", "bdfsd", "we" };
a = a.OrderBy(fun).ToArray();
}
private static int fun(string s)
{
return s.Length;
}
Run Code Online (Sandbox Code Playgroud)
它给出了编译时错误.我知道我们可以像这样使用Lambda表达式.a.OrderBy(s=>s.Length).ToArray();但我希望通过定义不同的功能来做到这一点.我做错了什么?
表达式fun是一个称为方法组的无类型表达式.
由于方法组没有类型,因此编译器无法推断泛型OrderBy方法的类型参数.
您需要显式传递类型参数,如下所示:
a = a.OrderBy<string, int>(fun).ToArray();
Run Code Online (Sandbox Code Playgroud)
要么,
a = a.OrderBy(new Func<string, int>(fun)).ToArray();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
7031 次 |
| 最近记录: |