> 백엔드 개발 > C#.Net 튜토리얼 > C#의 수익률 키워드

C#의 수익률 키워드

王林
풀어 주다: 2024-09-03 15:26:44
원래의
351명이 탐색했습니다.

Yield는 C#의 상황별 키워드입니다. 상황별 키워드는 전체 프로그램용으로 예약되지 않은 C#의 키워드입니다. 오히려 키워드를 적절하게 사용할 수 있는 프로그램의 특정 부분에 대해 예약된 키워드입니다. 이러한 키워드는 관련성이 컴파일러에 특별한 의미를 전달하지 않는 경우 유효한 식별자로 사용될 수 있습니다.

yield 키워드는 해당 키워드를 포함하는 메서드 또는 접근자가 반복자 메서드/접속자임을 나타냅니다. 반복자 메서드/접근자는 단일 값을 반환하지 않는 메서드/접근자입니다. 오히려 반복적으로 호출되며 각 반복마다 다른 값을 반환합니다.

구문

yield 키워드의 구문은 매우 간단합니다. 메소드나 접근자의 return 문 앞에 키워드를 지정하기만 하면 됩니다.

yield return <expression>;
로그인 후 복사

또는

yield break;
로그인 후 복사

이것은 키워드의 두 가지 구현입니다. return 문과 함께 사용하면 항복 키워드는 표현식의 종료 조건이 충족될 때까지 표현식에서 계산된 다음 값을 반환합니다. break 키워드와 함께 사용하면 Yield 키워드가 반복을 중단하고 프로그램 실행이 메서드/접속자에서 나옵니다.

C#에서 수익 키워드는 어떻게 작동하나요?

  1. 그렇다면 C#에서 키워드 단어는 어떻게 되나요? C# 컴파일러에서 키워드의 내부 구현은 무엇입니까? 이해합시다. Yield 키워드가 포함된 메서드는 foreach 또는 LINQ 쿼리와 같은 반복기 루프에서 사용될 수 있습니다. 루프가 반복될 때마다 메서드가 호출됩니다. 메서드의 코드는 항복 반환 또는 항복 중단 문이 나타날 때까지 실행됩니다.
  2. 메서드의 현재 실행 위치는 유지되며 이전 반복에서 중단된 부분부터 다음 반복이 계속됩니다.
  3. 이건 간단하지 않나요? 동일한 기술 구현을 살펴보겠습니다. Yield 키워드가 포함된 메서드는 항상 IEnumerable 또는 IEnumerator를 반환해야 합니다. 컴파일러는 Yield 키워드를 만날 때마다 해당 메서드가 반복자에 의해 소비된다는 것을 알고 있습니다. 메소드가 호출되면 컴파일러는 평소처럼 메소드 본문을 실행하지 않습니다.
  4. 오히려 메서드 본문을 실행하고 컴파일된 IEnumerable 세트를 소비하는 반복자 변수에 반환합니다. 메서드를 호출할 때마다 컴파일러는 항복 문을 찾아 해당 문에서 실행을 일시 중지합니다. 루프의 다음 반복은 마지막으로 일시 중지된 위치에서 실행을 계속합니다. 이는 루프의 종료 조건이나 Yield Break 문이 나올 때까지 계속됩니다. 각 반복 후에 상태 정보를 저장하기 위해 컴파일러는 상태 기계를 생성합니다.

C#의 수익 키워드 예

몇 가지 예를 살펴보겠습니다.

예시 #1 – 방법

아래 예에서는 Yield 키워드를 사용하여 피보나치 수열을 생성합니다.

using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
foreach (int ele in GetFibonacciSeries(10))
{
Console.Write(ele + "\t");
}
}
public static IEnumerable<int> GetFibonacciSeries(int x)
{
for (int a = 0, b = 0, c = 1; a < x; a++)
{
yield return b;
int temp = b + c;
b = c;
c = temp;
}
}
}
로그인 후 복사

C#의 수익률 키워드

예 #2 – 접속자

다음 예에서는 get 접근자와 함께 Yield 키워드를 사용합니다.

using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
foreach (Day day in new Days().DaysOfWeek)
{
Console.WriteLine("Day {0} of the week is {1}", day.DayOfWeek, day.DayName);
}
}
public static IEnumerable<int> Show(int x)
{
for (int a = 0, b = 0, c = 1; a < x; a++)
{
yield return b;
int temp = b + c;
b = c;
c = temp;
}
}
public class Days
{
public IEnumerable<Day> DaysOfWeek
{
get
{
yield return new Day{DayName = "Sunday", DayOfWeek = 1};
yield return new Day{DayName = "Monday", DayOfWeek = 2};
yield return new Day{DayName = "Tuesday", DayOfWeek = 3};
yield return new Day{DayName = "Wednesday", DayOfWeek = 4};
yield return new Day{DayName = "Thursday", DayOfWeek = 5};
yield return new Day{DayName = "Friday", DayOfWeek = 6};
yield return new Day{DayName = "Saturday", DayOfWeek = 7};
}
}
}
public class Day
{
public string DayName
{ get; set; }
public int DayOfWeek
{ get; set; }
}
}
로그인 후 복사

C#의 수익률 키워드

예 #3 – 수익률 중단

다음 예에서는 항복 break 문의 사용을 보여줍니다. 시리즈의 숫자가 발견되거나 최대 검색 제한에 도달하면 반복이 종료됩니다.

using System;
using System.Collections.Generic;
public class Program
{
public static void Main()
{
int elementToFind = 21;
int maxElements = 100;
foreach (int ele in FindFibonacciNumber(elementToFind, maxElements))
{
Console.Write("Found the number " + elementToFind + " in Fibonacci series.");
}
}
public static IEnumerable<int> FindFibonacciNumber(int n, int max)
{
for (int a = 0, b = 0, c = 1; true; a++)
{
if (a > max)
{
Console.Write("Searched first " + max + " Fibonacci numbers. Element " + n + " not found");
yield break;
}
if (b == n)
{
yield return b;
yield break;
}
int temp = b + c;
b = c;
c = temp;
}
}
}
로그인 후 복사

C#의 수익률 키워드

elementToFind 1234를 변경하면 출력은 다음과 같습니다.

C#의 수익률 키워드

규칙

1) 각 요소는 항복 반환 문을 사용하여 한 번에 하나씩 반환되어야 합니다.
2) 반환 유형은 IEnumerable 또는 IEnumerator여야 합니다.
3) Yield에는 in, ref, out 키워드를 사용할 수 없습니다.
4) Yield 키워드는 람다 표현식이나 익명 메소드와 함께 사용할 수 없습니다.
5) Yield return 문은 try-catch 블록 안에 있을 수 없습니다. try-finally 블록 안에 있을 수 있습니다.
6) Yield Break 문은 try-finally 블록 안에 있을 수 없습니다. try-catch 블록 내부에 있을 수 있습니다.

장점

yield 키워드를 사용하면 임시 컬렉션을 만들 필요가 없습니다. 메서드에서 데이터가 반환되기 전에 데이터를 저장하기 위해 임시 컬렉션을 만들 필요가 없습니다. 또한 메소드의 실행 상태가 유지되므로 코드에 명시적으로 저장할 필요가 없습니다.

결론 – C#의 수익 키워드

우리는 이 기사를 통해 키워드 산출 방법이 C#에서 매우 유용한 키워드라는 것을 배웠습니다. 가능한 한 적은 줄로 복잡한 문제를 코딩하는 데 도움이 되며 코드를 이해하기 쉽게 만듭니다. 이것은 C# 여정에 대한 고급 수준의 기사였습니다. 실습을 위해 코드에 키워드를 사용해 보는 것이 좋습니다.

위 내용은 C#의 수익률 키워드의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:php
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿