{"id":4089,"date":"2014-03-30T07:40:38","date_gmt":"2014-03-30T07:40:38","guid":{"rendered":"https:\/\/unknownerror.org\/index.php\/2014\/03\/30\/how-yield-works-in-c-collection-of-common-programming-errors\/"},"modified":"2014-03-30T07:40:38","modified_gmt":"2014-03-30T07:40:38","slug":"how-yield-works-in-c-collection-of-common-programming-errors","status":"publish","type":"post","link":"https:\/\/unknownerror.org\/index.php\/2014\/03\/30\/how-yield-works-in-c-collection-of-common-programming-errors\/","title":{"rendered":"How yield works in c#-Collection of common programming errors"},"content":{"rendered":"<p>I am using yield and struck somewhere , can anyone explain how yield work my scenerio is shown below.<\/p>\n<pre><code>public static IEnumerable Power(int number, int exponent)\n{\n    int result = 1;\n    int counter = 0;\n    Console.WriteLine(\"Inside Power - Before While\");\n    while (counter++ &lt; exponent)\n    {\n        Console.WriteLine(\"Inside Power - Inside While\");\n        result = result * number;\n        yield return result;\n        \/\/Console.WriteLine(\"New line added\");\n    }\n    Console.WriteLine(\"Inside Power - After While\"); \n}\n\nstatic void Main(string[] args)\n{\n    foreach (int i in Power(2, 8))\n    {\n        Console.WriteLine(\"{0}\", i);\n    }\n}\n<\/code><\/pre>\n<p>So the output we are getting here is<\/p>\n<pre><code>Inside Power - Before While\nInside power - Inside While\n2\nInside power - Inside While\n4\nInside power - Inside While\n8\nInside power - Inside While\n16\nInside power - Inside While\n32\nInside power - Inside While\n64\nInside power - Inside While\n128\nInside power - Inside While\n256\nInside power - AfterWhile\n<\/code><\/pre>\n<p>So my question is how the pointer shifts from foreach to Enumerable method while loop and prints and so on. why whole method is not called and only while loop is executing each time.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>I am using yield and struck somewhere , can anyone explain how yield work my scenerio is shown below. public static IEnumerable Power(int number, int exponent) { int result = 1; int counter = 0; Console.WriteLine(&#8220;Inside Power &#8211; Before While&#8221;); while (counter++ &lt; exponent) { Console.WriteLine(&#8220;Inside Power &#8211; Inside While&#8221;); result = result * number; [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"class_list":["post-4089","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/4089","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/comments?post=4089"}],"version-history":[{"count":0,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/posts\/4089\/revisions"}],"wp:attachment":[{"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/media?parent=4089"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/categories?post=4089"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/unknownerror.org\/index.php\/wp-json\/wp\/v2\/tags?post=4089"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}