yield 키워드를 이해하는 간단한 방법은 수익률 반환 키워드를 사용하여 반환 할 때 반복 결과를 보관하는 데 별도의 클래스가 필요하지 않습니다. 일반적으로 컬렉션을 반복 할 때 결과를 반환하려면 컬렉션 객체 을 사용하여 결과를 저장합니다. 예를 봅시다.
공공 정적 목록 곱셈 (INT 번호, INT 회)
{
List<int> resultList = new List<int>();
int result = number;
for(int i=1;i<=times;i++)
{
result=number*i;
resultList.Add(result);
}
return resultList;
}
정적 무효 메인 (문자열 []에 args) 위의 예에서
{
foreach(int i in Multiplication(2,10))
{
Console.WriteLine(i);
}
Console.ReadKey();
}
, 나는 결과를 반환 할 2 곱하기 10 번. 그래서 나는 곱셈을 만듭니다 2의 곱셈을 10 번 반환하고 목록에 결과를 저장하고 주된 메서드가 곱셈 메서드를 호출하면 컨트롤이 루프를 10 번 반복하고 결과를 목록에 저장합니다 . 이것은 yield returns를 사용하는 없이입니다. 내가 그것을
같은
공공 정적는 IEnumerable 곱셈 (INT 번호, int로 번) 보이는이 사용 항복 반환
{
int result = number;
for(int i=1;i<=times;i++)
{
result=number*i;
yield return result;
}
}
정적 무효 메인 (문자열 []에 args)
{
foreach(int i in Multiplication(2,10))
{
Console.WriteLine(i);
}
Console.ReadKey();
}
을 수행하려는 경우 가정
이제 곱하기 메서드에 약간의 변경이 있습니다. 반환 유형은 IEnumerable이며 결과를 보유 할 다른 목록은 없습니다. 반환 값 형식은 IEnumerable 또는 IEnumerator 여야하고 Yield는 상태 저장 반복을 제공하므로 결과를 저장하기 위해 여분의 클래스가 필요하지 않습니다. 따라서 위의 예제에서 Multiplication 메서드가 Main 메서드에서 호출되면 첫 번째 반복에서 결과를 계산하고 결과를 main 메서드로 반환하고 루프로 돌아와 두 번째 반복 결과를 계산 한 다음 결과를 이 방법으로 Yield는 각 반복마다 메서드를 하나씩 호출하는 결과를 반환합니다. 반복을 일으키는 Yield와 함께 사용되는 다른 Keyword Break가 중지됩니다. 위의 예에서, 예를 들어 난 방법은 다음과 같다 다음 시간의 절반 번호 (2분의 10 = 5)을위한 승산을 계산하려면 다음
공용 static IEnumerable을 곱셈 (INT 번호 int로 회)
{
int result = number;
for(int i=1;i<=times;i++)
{
result=number*i;
yield return result;
if (i == times/2)
yield break;
}
}
이 방법은 이제 2, 5 배의 곱셈이됩니다. 이것이 유익의 개념을 이해하는 데 도움이되기를 바랍니다. 더 많은 것을 위해 정보는 http://msdn.microsoft.com/en-us/library/9k7k7cf0.aspx
를 구경 해주세요. 나의 이해에서 당신은 그것이 정확하다고 설명하는 것처럼 보입니다. 수율은 기본적으로 다음에 다른 객체를 호출 할 때까지 해당 메소드 내에서 실행을 일시 중지합니다. –