Ang*_*oft 6 c# linq lambda expression notation
我发现了一个我完全理解的小脚本.我有一个字符串,例如" 1 -2 5 40 ".它读取输入字符串,将其拆分为临时数组.然后解析该数组并将每个元素转换为整数.整个过程是将最接近的整数归零.
但我不明白的是符号Select(int.Parse).这里没有lambda表达式,并且不使用括号调用int.Parse方法.与OrderBy(Math.Abs)相同
提前谢谢=)
var temps = Console.ReadLine().Split(new []{' '}, StringSplitOptions.RemoveEmptyEntries);
var result = temps.Select(int.Parse)
.OrderBy(Math.Abs)
.ThenByDescending(x => x)
.FirstOrDefault();
Run Code Online (Sandbox Code Playgroud)
Jon*_*eet 11
int.Parse
是一个方法组 - 您所看到的是方法组转换为委托.要在没有LINQ的情况下看到它:
Func<string, int> parser = int.Parse;
int x = parser("10"); // x=10
Run Code Online (Sandbox Code Playgroud)
它大致相当于:
Func<string, int> parser = text => int.Parse(text);
Run Code Online (Sandbox Code Playgroud)
...虽然如果你想进入细节有很多差异:)
Select(int.Parse)
几乎相当于Select(x => int.Parse(x))
.
的Select
要求的Func<T, R>
,在这种情况下也是签名int.Parse
(它具有与一个返回值的单个参数).它将方法组转换为匹配的委托.
在这种情况下Func<T, R>
将映射到Func<string, int>
,因此它匹配int Parse(string)
签名.
归档时间: |
|
查看次数: |
686 次 |
最近记录: |