IEnumerable 반환 메서드에서 yield return을 사용하는 것은 그리 낯설지 않습니다.
그러나 이 경우 out, ref 파라미터를 사용할 수 없다는 제약이 있는데요.
이를 피하는 방법을 찾아서 공유하고자 합니다.
활용 방안
예를 들어 특정 문서를 읽어 들여 각각의 page 개체를 반환해야 해야하는 기능이 있다고 합시다.
이 때 추가로 문서의 정보 (예, 페이지수) 등을 파악하고 싶습니다.
각각의 페이지를 반환하거나 특정 페이지를 반환하기 위해서는 문서에 접근하여 내용을 읽어들이는 행위를 해야 합니다.
이 때 발생하는 비용은 적지 않으므로 가급적 한 번 내용을 읽었을 때, 다양한 형태의 정보를 수집하는 것이 유리하겠지요,
문서의 정보를 수집하는 행위가 page를 반환하는 기능에 부수적으로 동반된다고 하면 최초 접근하여 문서의 메타데이터를 수집하고 이 후 각각의 페이지를 반환한다고 합시다.
이 경우 메서드가 있으면 좋을 듯 합니다.
그러나 위의 사양으로는 compile 되지 않습니다.
그래서 다음과 같은 꼼수(!)가 필요합니다.
이는 위에 위치한 GetPages 메서드가 yield return을 포함하지 않기 때문에 가능합니다. ;)
References
https://msdn.microsoft.com/ko-kr/library/9k7k7cf0.aspx
'Programming > .Net' 카테고리의 다른 글
String.Join method that ignores null or empty strings? (0) | 2015.05.14 |
---|---|
ConfigurationSection을 이용한 App configuration #02 (0) | 2015.02.24 |
Select object within min or max property value. (0) | 2015.01.20 |
ConfigurationSection을 이용한 App configuration (0) | 2015.01.15 |
문서변환 (0) | 2014.11.05 |