2

IEnumerableインターフェイスのSkipメソッドを探しています。

IListパブリックIEnumerableインターフェイスなので、そのメソッドにアクセスできると思っていました。

とにかく、次のコードは Mono でコンパイルに失敗します:

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

エラーは次のとおりです。

error CS1061: Type System.Collections.Generic.IList<float>' does not contain a definition forSkip' and no extension method Skip' of type System.Collections.Generic.IList' could be found (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. ToList()Skip は LINQ メソッドであるため、skip withメソッドを使用した後にリストに変換する必要があります。

最終結果:

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 に答える