Section 20.11: IEnumerable<> 인스턴스로의 배열
모든 배열들은 non-generic 버전의 IList
인터페이스를 (더불어 상위 인터페이스인 non-generic 버전의 ICollection
과 IEnumerable
를 포함하여) 구현 (implement) 하게 되어 있다.
더욱 중요한 점은, 1차원 배열들의 경우 해당 배열의 데이터 타입에 대하여 IList<>
와 IReadOnlyList<>
generic 인터페이스를 (더불어 이들의 상위 인터페이스를 포함하여) 구현 (implement) 하게 되어 있다는 점이다. 이것이 의미하는 바는 이러한 배열들이 generic 한 열거형 (enumerable) 타입으로 취급될 수 있다는 것으로, 배열이 아닌 다른 형태로 변환시킬 필요 없이 다양한 함수들의 파라미터로 바로 사용될 수 있게 된다.
int[] arr1 = { 3, 5, 7 };
IEnumerable<int> enumerableIntegers = arr1; //배열이 IEnumerable<T> 를 구현 (implement) 하므로 변환이 허용된다
List<int> listOfIntegers = new List<int>();
listOfIntegers.AddRange(arr1); // List 의 내용물을 채우기 위해 배열에 대한 reference 를 사용할 수 있다.
위 코드 실행 시, listOfIntegers
는 3
, 5
, 그리고 7
의 값을 포함하는 List<int>
를 갖게 될 것이다.
IEnumerable<>
로의 변환 지원을 통해, 배열 내용을 LINQ 를 사용하여 조회할 수도 있다.
다음 예제를 확인한다.
arr1.Select(i => 10 * i)
본 문서는 C# Notes for Professionals (라이센스:CC-BY-SA) 를 한글로 번역한 문서입니다. 번역상 오류가 있을 수 있으므로 정확한 내용은 원본 문서를 참고하세요.
[출처] https://books.goalkicker.com/CSharpBook/
반응형
'번역 > C# Notes for Professionals' 카테고리의 다른 글
21.1: 배열의 내용을 주어진 값만큼 shift rotate 시키는 generic 메소드 예제 (0) | 2021.05.10 |
---|---|
20.12: 하나의 배열이 다른 배열의 내용을 포함하고 있는지 검사하기 (0) | 2021.05.10 |
20.10: 배열 공변성 (covariance) (0) | 2021.05.01 |
20.9: 가변 배열 (Jagged array) (0) | 2021.04.30 |
20.8: 순차열 (sequentual) 숫자들로 이루어진 배열 생성하기 (0) | 2021.04.22 |