을 쓴 이해 :전개 된 IEnumerable <IEnumerable <>>; 나는 (컴파일)이 확장 방법 제네릭
public static IEnumerable<J> Flatten<T, J>(this IEnumerable<T> @this)
where T : IEnumerable<J>
{
foreach (T t in @this)
foreach (J j in t)
yield return j;
}
아래의 코드는 컴파일 타임 오류가 발생이 (더 적합한 방법을 찾을 수 없음), 이유는 무엇입니까? :
public static IEnumerable<J> Flatten<J>(this IEnumerable<IEnumerable<J>> @this)
{
foreach (IEnumerable<J> js in @this)
foreach (J j in js)
yield return j;
}
편집 (2)
: 나는 다음과 같은 확장 기능을 구현하는 경우IEnumerable<IEnumerable<int>> foo = new int[2][];
var bar = foo.Flatten();
, 나는 어떤 컴파일 타임 오류 얻을 내가 생각이 질문에 대답을하지만, 대한 또 다른 질문을 제기 과부하 해결 및 유형 제약. 이 질문에 내가 여기에 넣어 : Why aren't type constraints part of the method signature?이
주위에 많은 열거 형이 있으므로 편집하지 않습니다. 'foo.Flatten, int>();'가 작동해야합니다. –
dlev