2

我正在寻找IEnumerable接口的Skip方法。

IList公共IEnumerable接口,所以我认为我能够访问该方法。

无论如何,以下代码无法在 Mono 上编译:

private static void SkipFirst(IList<float> list)
{
    IList<float> skippedFirst = list.Skip(1);
}

这是错误:

错误 CS1061:类型System.Collections.Generic.IList<float>' does not contain a definition forSkip' 并且找不到扩展方法Skip' of type System.Collections.Generic.IList'(您是否缺少 using 指令或程序集引用?)

我究竟做错了什么?如何从IList接口访问该方法?

4

2 回答 2

3

Skip是一个扩展方法,所以它实际上不是任何集合类的方法。相反,它是由 Linq 定义的。您需要添加对 Linq 的引用: using System.Linq;

list.Skip(1)只是语法糖,它实际上被转换为Enumerable.Skip(list, 1)

此外,Skip返回IEnumerable<T>这意味着您需要使用

IList<float> skippedFirst = list.Skip(1).ToList();

或者

IEnumerable<float> skippedFirst = list.Skip(1);
于 2012-10-25T09:30:46.010 回答
1
  1. 你忘记using System.Linq了你的用法。
  2. Skip 是 LINQ 方法,因此您需要在使用 skip withToList()方法后转换为列表。

最终结果:

using System.Linq;

// some code

private static void SkipFirst(IList<float> list)
{
    IList<float> skippedFirst = list.Skip(1).ToList();
}
于 2012-10-25T09:22:27.483 回答