-3

我对这个示例代码有一点误解:

int[] numbers = { 5, 4, 1, 3, 9, 8, 6, 7, 2, 0 };

var laterNumbers = numbers.SkipWhile((n, index) => n >= index);

“n”代表一个数组元素。“index”表示元素的索引。

问题:我们如何知道 index 参数准确地表示索引而不是元素本身?

编辑:

好,我知道了。SkipWhile 只有 2 个重载,编译器决定使用哪一个,无论输入参数是一个还是两个。

问题表述不当)

4

2 回答 2

1

该数组不必是整数数组。例如,如果它是一个字符串数组,那么区别就很明显了,因为您不能以相同的方式使用它们:

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);
于 2013-02-04T09:06:56.990 回答
0

此扩展方法只有两个重载,不同之处仅在于它们采用的谓词。一个谓词采用单个值(可枚举中的项目),另一个采用可枚举中的项目和表示索引的 int。

没有混乱。如果谓词有两个参数,那么第二个是索引。如果您只传递一个参数,那么它必须是可枚举项。

于 2013-02-04T09:02:40.550 回答