With yield keyword, the control moves from the caller to source and from the source back to the caller to and fro.
yield statement can be used in two forms
yield return statement returns each element at at time.
Yield return allows you to run custom iteration without temp collection.
Lets take an example to understand in more detail
Function to return RandomNumbers using List
Same function using return yield without using any temp collection
See, in the above examples, both are performing the same thing, but in the first example we are creating temp collection "list" but in the second example with yield there is no need create any temp collection
yield break statement is used to break the iteration. break statement is used to terminate the loop but yield break is used to return from the method.
yield statement can be used in two forms
yield return <expression>; yield break;
yield return statement returns each element at at time.
Yield return allows you to run custom iteration without temp collection.
Lets take an example to understand in more detail
Function to return RandomNumbers using List
static IEnumerable<int> GetRandomNumbers(int count) { Random rand = new Random(); List<int> ints = new List<int>(count); for (int i = 0; i < count; i++) { ints.Add(rand.Next()); } return ints; }
Same function using return yield without using any temp collection
using System; using System.Collections.Generic; namespace ConsoleApplication1 { class Program { static void Main(string[] args) { foreach (int i in GetRandomNumbers(10)) Console.WriteLine(i); } static IEnumerable<int> GetRandomNumbers(int count) { Random rand = new Random(); for (int i = 0; i < count; i++) { yield return rand.Next(); } } } }OUTPUT
See, in the above examples, both are performing the same thing, but in the first example we are creating temp collection "list" but in the second example with yield there is no need create any temp collection
yield break statement is used to break the iteration. break statement is used to terminate the loop but yield break is used to return from the method.
static void Main(string[] args) { foreach (int i in GetRandomNumbers(10)) Console.WriteLine(i); System.Threading.Thread.Sleep(5000); } static IEnumerable<int> GetRandomNumbers(int count) { Random rand = new Random(); for (int i = 0; i < count; i++) { yield return rand.Next(); yield break; } }OUTPUT
1 comment:
Write Commentsnice share, if you interest to share more about your website or other promotion source code free or paid, visit and discovery this http://www.pasarkode.com
ReplyDelete