2012-10-25 3 views
2

Skip 메서드가 IEnumerable 인터페이스를 찾고 있습니다.IEnumerable 인터페이스와 Mono의 Skip 메서드

IList 공용인터페이스이므로이 방법에 액세스 할 수 있다고 생각했습니다. 여기

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 for Skip' and no extension method Skip' of type System.Collections.Generic.IList' could be found (are you missing a using directive or an assembly reference?)

내가 잘못하고있는 중이 야 무슨 일이? IList 인터페이스에서 해당 메소드에 액세스하려면 어떻게해야합니까?

+0

'Syst em.Core' 패키지와'cs 파일에서 System.Linq' 사용하기 – sll

답변

3

Skip 내선 방법이므로 실제로 컬렉션 클래스 중 어느 하나의 방법이 아니다. 대신 그것은 Linq에 의해 정의됩니다. 당신은 Linq에 대한 참조를 추가해야합니다 using System.Linq;

list.Skip(1)가 실제로 또한 Enumerable.Skip(list, 1)

로 변환되고, 단지 구문 설탕, 당신은 하나

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

를 사용할 필요가 의미 Skip 반환 IEnumerable<T> 또는

IEnumerable<float> skippedFirst = list.Skip(1); 
1
  1. 귀하의 용도에 using System.Linq을 잊어 버렸습니다.
  2. Skip is LINQ 메서드이므로 ToList() 메서드로 건너 뛰면 목록으로 변환해야합니다.

결과적 :

using System.Linq; 

// some code 

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

감사합니다. 지금 작동합니다. – Heisenbug

+0

완벽을 기하기 위해'skippedFirst'를'IEnumerable '으로 선언하는 것이'.ToList()'를 추가하는 것보다 더 좋은 선택이 될 수 있습니다. 그것은'skippedFirst'가 어떻게 사용될 것인지에 달려 있습니다. – hvd