Yield keyword has two forms:
- yield return <expression>; (expression is defined in return type)
- yield break; (yield break is used to end iteration)
Yield must be of return type IEnumerable, IEnumerable<T>, IEnumerator, or IEnumerator<T>.
Yield keyword is consumed by an iterator method by using a foreach statement or LINQ query.
Example:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
static void Main(string[] args) { foreach (var increment in Countdown(20)) { Console.WriteLine(increment); } } private static IEnumerable<int> Countdown(int numbers) { for (int i = numbers; i > 0; i--) { if(i <= 0) yield break; else yield return i; } } |