반응형
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#' 카테고리의 다른 글
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 |
댓글