2012-01-05 3 views
4

나는 두 가지 유형의 데이터, 즉 관찰 가능한 MyClass 컬렉션과 myclass의 2 차원 배열을 받아 들여야하는 함수를 가지고있다. 구조는 중요하지 않습니다. 왜냐하면 저는이 컬렉션에서 linq 쿼리를 사용하기 때문입니다. 마찬가지로 - Myclass.Value == 3.두 개의 차원 배열이 IEnumerable이 아닙니까?

그래서 나는 2 차원 배열과 관찰 가능한 컬렉션 모두 IEnumerable을 구현하고 작동해야하므로 IEnumerable<MyClass> 유형의 매개 변수를 허용하는 함수를 만들었습니다.

그러나 내 함수에 MyClass [,] 형식의 매개 변수를 전달하려고하면 컴파일 타임 오류가 발생합니다. 인수 유형 Myclass [,]는 매개 변수 유형 IEnumerable<MyClass>에 할당 할 수 없습니다.

무엇이 잘못 되었나요? 고맙습니다.

+0

가 - 당신은 당신의 방법은 유형의 매개 변수'IEnumerable'을 허용 함을 주장하지만 오류 메시지 주어, 나는 그것이 매개 변수를 받아 의심 형식이 IEnumerable 입니다. 그것들은 다른 것들입니다. –

+1

@ rich.okelly :'Array'는 generic이 아닌데 어떻게'IEnumerable '를 구현할 수 있습니까? (내 대답을 참조하십시오 ...) –

+0

@ rich.okelly : 다음 워드 프로세서 버그를보고 싶습니다. 처음부터 생각하지 않고 MSDN에서 읽는 모든 것을 믿지 마십시오. –

답변

9

사각형 배열 IEnumerable을 시행하고 있지만IEnumerable<T> (명백한 요소 유형을 포함한 모든 T에 대한)를 구현하지 않습니다 . 당신은 Cast에 호출하여 쉽게이 문제를 해결할 수 있습니다

나는 당신의 질문은 부정확 생각
SomeMethod(array.Cast<MyClass>()); 
+0

감사합니다. 이것은 바보 같은 질문 일지 모르지만 정확히 Ienumerable과 Ienumerable의 차이는 무엇입니까 ? –

+0

@VojtechRuzicka : 그들은 'IEnumerable '이 'IEnumerable'을 확장하더라도 서로 다른 인터페이스입니다. 'IEnumerable '은 일반적인 것이고,'IEnumerable'은 아닙니다. 만약 당신이 이미 제네릭에 대해 알고 있지 않다면, 이제 그들에게 읽어주기에 좋은 시간이 될 것입니다. –

+0

흥미 롭습니다. 2 차원 어레이를 열거하는 것이 가능하다는 것을 몰랐습니다. –

관련 문제