문제

내가 읽은 내용에서

yield return <value> 

라인이 실행되는 순간 기능을 벗어납니다. 그러나 Scott Guthrie의 텍스트는이를 나타냅니다

var errors = dinner.GetRuleViolations();

GetRuleViolations가 긴 목록이지만 모든 규칙 위반 목록을 성공적으로 철회합니다.

if(String.someFunction(text))
    yield return new RuleViolation("Scary message");
if(String.anotherFunction(text))
    yield return new RuleViolation("Another scary message");

이것은 어떻게 작동합니까?

도움이 되었습니까?

해결책

목록을 반환하지 않습니다. 반환합니다 IEnumerable<RuleViolation>. yield return 값을 반환합니다 반복자 방법. 반복자는 방법에서 일련의 요소를 생성하는 쉬운 방법입니다.

다른 팁

보다 수율 (C# 참조)

수율 키워드는 게으른 평가라고 알려진 것을 사용합니다. 이것이 실제로 의미하는 바는 "수익 수익률"이후의 모든 것이 열거 자에게 요청 될 때까지 평가되지 않는다는 것입니다.

또한 반복자 블록에서 Eric Lippert의 블로그를 살펴보십시오.
1 부
Part 2- REF 또는 OUT 매개 변수가없는 이유
파트 3- 드디어 수익률이없는 이유
파트 4- 캐치에 수율이없는 이유
파트 5- 푸시 대 풀
6 부 - 안전하지 않은 코드가없는 이유

작동하기 때문에 작동합니다 yield return 기본적으로 일부 배관 코드를 자동화하는 열거 자체에 값을 반환합니다 (예 : 구문 설탕). 그것은 방법이 돌아 오지 않는 것이 아닙니다. yield break.

추가 정보:

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top