반응형
yield return을 이용한 지연 계산
yield return에 대해서 공부하면서 대량의 데이터를 다루기 편해지고 지연 로딩이 강점이라는 설명글들을 많이 읽었지만 "그래서 이걸 대체 어디에 사용하지?"라는 의문에 계속해서 들고 있었다. 그러다가 피보나치 수열을 만드는 예제를 보고 yield return을 사용해서 소수를 만드는 메서드를 만들면 좋을거 같다는 생각이 들어서 코드를 한번 짜봤다.
사용자는 자기가 필요한만큼 소수를 꺼내쓰기만 하면 된다. 이에 대한 계산은 그때 그때 온-디멘드(OnDemand)로 이루어진다.
예제
public static IEnumerable<int> GeneratePrimeNumber()
{
int start = 2;
while (true)
{
for (int i = 2; i < start; i++)
{
if (start % i == 0)
{
start++;
continue;
}
}
yield return start;
start++;
}
}
static void Main(string[] args)
{
foreach (var i in GeneratePrimeNumber().Take(5))
{
Console.WriteLine(i);
}
}
함께 읽으면 좋은 글
C# yield 이해하기
C# yield 이해하기 yield는 iterator를 포함하는 메서드에서 사용되는 강력한 키워드이다. yield를 사용하면 enumerable 배열을 간단하게 반환할 수 있다. 하나의 요소를 해당 시점에서 반환하기 때문에 기
jettstream.tistory.com
참고 사이트
Yield in C#: Usage + Examples (2024)
Delving into the inner workings of C#? Ready to get a grip on the concept of Yield? Brace up! We're about to embark on a captivating journey that will
www.bytehide.com
'프로그래밍 > C#' 카테고리의 다른 글
C# 웹 인증(Authentication) & 권한(Authorization) 코드 작성하기 (0) | 2024.02.19 |
---|---|
C# Value Type vs Reference Type (0) | 2024.02.15 |
C# yield 이해하기 (1) | 2024.02.14 |
C# 지연 평가(lazy evaluation)에 대해서 (0) | 2024.02.13 |
C# Virtual vs Abstract (0) | 2024.02.03 |
댓글