티스토리 뷰
이터레이터(Iterator)?
영어로 iterate는 반복을 의미한다. 즉, 프로그램안에서도 이터레이터는 반복하기 위한 것을 의미한다.
C#(.NET Framework)에서 이터레이터는 열거자로 부르며 IEnumerator 인터페이스를 통해 나타낸다.
이터레이터를 사용하여 yield 키워드를 사용해 배열 또는 컬렉션 클래스에 대해 요소를 열거할 수 있다.
간단하게 말해 foreach 구문으로 처리할 수 있는 것과 같다.
yield?
호출자(Caller)에게 컬렉션 데이터를 하나씩 리턴할 때 사용
yield 종류 2개
- yield return : 컬렉션 데이터를 하나씩 리턴할 때 사용
- yield break : 리턴을 중지하고 Iteration 루프를 빠져나올 때 사용
foreach문은 이용자 측에서는 편하지만 IEnumerable이나 IEnumerator 인터페이스의 구현이 필요해서 조금 번거로울 때가 있다.
이런 경우 이터레이터를 사용하면 이 인터페이스의 구현이 쉬워지고 요소를 열거할 수 있다.
・이터레이터 (C#)
이터레이터는 C# 2.0 부터 사용할 수 있다.
메소드나 속성(get) 블록 내에서 return 대신 yield를 사용해 열거되는 값을 반환한다.
무슨 말이지..? 싶을테지만, foreach구문과 yield return을 사용한 예제를 보면 이해하기 쉬울거임..!
using System;
using System.Collections.Generic;
namespace Test
{
class Program
{
static void Main(string[] args)
{
// 1-10까지 열거
foreach (var item in GetList(10))
{
Console.WriteLine(item);
}
Console.ReadKey();
}
// 1부터 인수까지의 값을 반환하는 이터레이터
static public IEnumerable<int> GetList(int end)
{
for (int i = 1; i <= end; i++)
{
yield return i;
}
}
}
}
・이터레이터 (VB.NET)
VB.NET에서는 Iterator 키워드를 Function앞에 붙이고
Yield 스테이트먼트를 사용해 값을 반환한다.
Sub Main()
For Each n In MyIterator()
Console.WriteLine(n)
Next
Console.Read()
End Sub
' 1부터 10까지 이터레이터
Private Iterator Function MyIterator() As IEnumerable(Of Integer)
For n = 1 To 10
Yield n
Next
End Function
이런식으로 이터레이터를 사용하면 반복처리를 할 때 쉽게 구현할 수 있을 것임..!
'개발언어 > C#' 카테고리의 다른 글
[C#] 디버그모드 릴리즈모드 (0) | 2022.08.10 |
---|---|
[C#] in/out/ref 파라미터 한정자의 공통점, 차이점, 예제 (0) | 2022.07.01 |
[C#] Action / Func 대리자 (0) | 2021.03.09 |
DAO, DTO, Entity Class의 차이 (0) | 2021.02.24 |
C# FirstOrDefault() 메소드 (0) | 2021.02.24 |
- Total
- Today
- Yesterday
- REVOKE
- 유틸리티
- VB.Net
- commit
- in/out/ref
- 후나빙
- BEGIN절
- PL/SQL 예외처리문
- in/out/ref 공통점
- 시간차이
- Oracle
- 초기화파라미터파일
- in/out/ref 차이점
- TrimEnd
- 에러
- 참조전달
- DECLARE절
- C#
- EXCEPTION절
- 유틸리티에러
- PL/SQL 실행문
- USER_SYS_PRIVS
- vba
- DBA_SYS_PRIVS
- 동기통신
- rollback
- in/out/ref 예제
- NLog
- pl/sql
- grant
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |