AI Store에서 AI코딩으로 만들어진 앱을 만나보세요!
지금 바로 방문하기

yield return이란 무엇인가?

카테고리

프로그래밍/소프트웨어 개발

서브카테고리

개발 툴

대상자

C# 개발자, 특히 yield return 개념을 이해하고자 하는 중급 개발자

핵심 요약

  • yield returnIEnumerable을 통해 값의 지연 평가(Lazy Evaluation)를 가능하게 하여 메모리 최적화에 유리
  • 대규모 파일 처리 시 한 줄씩 로드하며 즉시 처리 가능
  • 다중 반복, 인덱스 접근, 외부 상태 의존성 등에서 한계가 존재

섹션별 세부 요약

1. `yield return`의 기본 개념

  • IEnumerable을 통해 컬렉션처럼 값 생성이 가능하며, 실제로 사용될 때까지 메모리에 저장하지 않음
  • 예시: .csv 또는 .txt 파일을 한 줄씩 읽으면서 즉시 처리 가능
  • 메모리 사용 최적화를 위한 주요 장점

2. 지연 평가(Lazy Evaluation) 예시

  • ReadFileLines 메서드: 파일을 한 줄씩 읽고, yield return을 통해 즉시 처리
  • Fibonacci 수열의 두 가지 구현: GenerateFibonacciLazy는 무한 시퀀스 생성, GenerateFibonacciEager는 메모리에 전체 데이터 저장

3. `yield return`의 한계

  • 다중 반복 시 재실행 발생 (.ToList() 호출 시 한 번만 생성)
  • 인덱스 접근([]) 불가능
  • 외부 상태 변경 시 예측 불가능한 결과 발생 (예: _minPrice 필드 변경 시 필터링 조건 변경)

4. `yield return`의 활용 사례

  • 검증 로직에서 오류 메시지 생성 (예: ValidateUser 메서드)
  • yield break로 조기 종료 가능 (예: user == null 시 즉시 종료)

결론

yield return은 대규모 데이터 처리 및 지연 평가를 위한 강력한 도구이지만, 다중 반복, 인덱스 접근, 외부 상태 의존성 등에서 주의가 필요합니다. 특히, 외부 상태가 변경될 경우 예측 불가능한 결과가 발생할 수 있으므로, 사용 시 이러한 한계를 고려하여 설계해야 합니다.