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

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 for Skip',找不到扩展方法Skip' of type System.Collections.Generic.IList'(您是
  缺少using指令或程序集引用?)


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

最佳答案

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);

关于c# - IEnumerable接口(interface)和Mono中的Skip方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13065392/

10-13 08:14