개발공부/C#

[Effective C#] 아이템 29 : 시퀀스를 반환해야 하는 경우 컬렉션을 반환하기보다 이터레이터를 반환하는 것이 낫다.

개발자 찐빵이 2021. 12. 5. 22:08
728x90

LINQ 란?

지연된 쿼리를 지원하고 다양한 데이터 저장소에 대해 쿼리를 수행할 수 있는 통합 구문을 제공하는 기능.
C# 3.0에 추가된 기능이다.
쿼리 제공자를 자유롭게 구현할 수 있다.

LINQ의 목표

데이터 소스의 유형과 상관없이 동일한 작업을 수행하는 코드를 손쉽게 작성하는 것.

시퀀스를 반환해야 할 때

메서드를 작성하다보면 단일의 객체를 반환하기보다 일련의 시퀀스를 반환해야 하는 경우가 있다.
이때 컬렉션보다 이터레이터를 반환하는 것이 좋다.

이터레이터 메서드란?

호출자가 요청한 시퀀스를 생성하기 위해 yield return 문을 사용하는 메서드.

언제 이터레이터 메서드를 이용하여 시퀀스를 생성해야 하는가?

메서드가 반환하는 시퀀스를 캐싱할 때 IEnumerable와 같은 인터페이스를 반환하도록 메서드를 작성하는 것이 더 편리하다.
필요할 때마다 항목을 생성할 수 있고, ToList()나 ToArray()를 이용하여 전체 시퀀스가 저장된 컬렉션을 생성할 수 있다.

반응형