Linq 扩展方法 SkipWhile 和 lambda exp, c#.
本文关键字:exp lambda 扩展 方法 SkipWhile Linq | 更新日期: 2023-09-27 17:57:16
我对此示例代码有一点误解:
int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };
var laterNumbers = numbers.SkipWhile((n, index) => n >= index);
"n"表示数组元素。"索引"表示元素的索引。
问题:例如,我们如何知道 index 参数准确地表示索引而不是元素本身?
编辑:
好的,我知道了。SkipWhile 只有 2 个重载,编译器会确定使用哪一个重载,无论有一个还是两个输入参数。
问题表述不当)
数组不必是整数数组。例如,如果它是一个字符串数组,那么差异是显而易见的,因为您不能以相同的方式使用它们:
string[] strings = { "The", "quick", "brown", "fox", "jumps",
"over", "the", "lazy", "dog"};
// in the lambda "n" is a string, and "index" is an integer
var laterStrings = strings.SkipWhile((n, index) => n.Length >= index);
此扩展方法只有两个重载,仅在它们采用的谓词上有所不同。一个谓词采用单个值(可枚举项),另一个谓词采用可枚举项和一个表示索引的 int。
没有混淆。如果谓词采用两个参数,则第二个参数是索引。如果只传递一个参数,则它必须是可枚举项。