C#では、あなたは、戻り値の型を持つメソッド構築することができますIEnumerable<T>
し、使用をyield return
してyield break
流れを制御します。両方のコントロールを使用する簡単な例を次に示します。
public IEnumerable<int> GetEvens(int start, int end) {
if(end < start)
yield break;
if(start & 2 != 0)
start++;
for(int i = start; i <= end; i+=2) {
yield return i;
}
}
私の質問は、もともと次のように2つのキーワードをyield
使用し、単一のyield
「戻り値を返す」ように使用しないように設計されていた理由です。
public IEnumerable<int> GetEvens(int start, int end) {
if(end < start)
return; // stop completely and return nothing
if(start & 2 != 0)
start++;
for(int i = start; i <= end; i+=2) {
yield i; // yield the current value.
}
}
私にとって、これは読みやすく理解しやすいです。
yield x;
当時は構文エラーでもなかったでしょうか?