C \ # 키워드 의 yield (교체 기)
yield 하면 교체 기 를 먼저 말 해 야 합 니 다.교체 기 는 C \ # 2.0 의 새로운 기능 입 니 다. 그것 이 있 으 면 우 리 는 자신의 클래스 나 구조 에서 foreach 교 체 를 지원 할 수 있 습 니 다. 전체 IEnumerable 인 터 페 이 스 를 실현 하지 않 아 도 됩 니 다. 우 리 는 하나의 교체 기 를 제공 하면 클래스 의 데이터 구 조 를 옮 겨 다 닐 수 있 습 니 다.컴 파일 러 가 교체 기 를 감지 하면 IEnumerable 인터페이스의 Current, MoveNext, Dispose 방법 을 자동 으로 생 성 합 니 다.교체 기 코드 는 yield return 문 구 를 사용 하여 모든 요 소 를 순서대로 되 돌려 줍 니 다.yield break 는 교 체 를 중단 합 니 다.yield return 구문 에 도착 하면 현재 교체 되 는 위 치 를 저장 하고 다음 에 교체 기 를 호출 할 때 이 위치 에서 실 행 됩 니 다.
다음 예제 에서 교체 블록 (여 기 는 방법
Power(int number, int power)
에서 yield 문 구 를 사 용 했 습 니 다.Power 방법 을 호출 할 때, 그것 은 숫자 멱 을 포함 하 는 매 거 진 대상 을 되 돌려 줍 니 다.Power 방법의 반환 유형 은 IEnumerable (교체 기 인터페이스 형식) 입 니 다.using System;
public class List
public static IEnumerable Power(int number, int exponent)
int counter = 0;
while (counter++ < exponent)
result = result * number;
}
{
foreach (int i in Power(2, 8))
Console.Write("{0} ", i);
}
yield 키워드 yield: 교체 블록 에서 매 거 진 대상 에 게 값 을 제공 하거나 교체 종료 신 호 를 보 내 는 데 사 용 됩 니 다. 교체 블록 에는 두 개의 특수 한 문구 가 있 습 니 다. ●yield return
교체 블록 교체 기 블록 은 하나 이상 의 yield 문 구 를 가 진 코드 블록 입 니 다. 다음 세 가지 유형의 코드 블록 중 하 나 는 모두 교체 기 블록 일 수 있 습 니 다. ■ 방법 주체 ■ 액세스 주체 ■ 연산 자 주체
yield 문 구 는 교체 기 블록 에 만 나타 날 수 있 습 니 다. 이 블록 은 방법, 연산 자 또는 방문 기의 몸 으로 만 사용 할 수 있 습 니 다. 이러한 방법, 연산 자 또는 방문 기의 몸 은 다음 과 같은 제약 을 받 습 니 다. ■ 안전 하지 않 은 블록 은 허용 되 지 않 습 니 다. ■ 방법, 연산 자, 접근 기의 인 자 는 ref 나 out 일 수 없습니다. ■ yield 문 구 는 익명 의 방법 에 나타 나 면 안 됩 니 다. ■ yield return 문 구 는 catch 블록 이나 하나 이상 의 catch 자 구 를 포함 한 try 블록 에 나타 나 면 안 됩 니 다.
yield 문장의 교체 블록 은 IEnumerator 와 IEnumerable 두 가지 대상 을 만 들 수 있 습 니 다. ★ IEnumerable 대상: public IEnumerable
PS: 거의 모든 yield return 과 직접 return list 에 대한 테스트 결 과 는 yield return 이 더 느리다 는 것 을 알려 줍 니 다. 하지만 yield return 을 진정 으로 알 게 되면 대부분의 경우 yield return 을 선택 할 것 이 라 고 믿 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
정수 반전Udemy 에서 공부 한 것을 중얼거린다 Chapter3【Integer Reversal】 (예) 문자열로 숫자를 반전 (toString, split, reverse, join) 인수의 수치 (n)가 0보다 위 또는 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.