{"id":4414,"date":"2024-03-14T01:26:29","date_gmt":"2024-03-14T01:26:29","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/"},"modified":"2025-07-31T07:33:54","modified_gmt":"2025-07-31T07:33:54","slug":"how-to-use-iterators-to-iterate-through-a-collection-in-c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/","title":{"rendered":"Using C# Iterators Effectively"},"content":{"rendered":"<p>In C#, iterators can be used to traverse collections. They are a special type of method that allows us to sequentially access the elements in a collection without exposing the internal implementation details of the collection.<\/p>\n<p>The steps for traversing a collection using an iterator are as follows:<\/p>\n<ol>\n<li>Implement a method in the collection class that returns an iterator, typically named GetEnumerator(), and returns an iterator object that implements the IEnumerable interface.<\/li>\n<li>Use the yield keyword in an iterator object to return elements from a collection. Yield keyword can transform the current method into an iterator, allowing it to return an element each time a loop iteration occurs.<\/li>\n<li>Use a foreach loop in the caller&#8217;s code to iterate through the elements in the collection.<\/li>\n<\/ol>\n<p>Here is a simple example demonstrating how to use an iterator to traverse a collection of integers.<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">using<\/span> System;\r\n<span class=\"hljs-keyword\">using<\/span> System.Collections;\r\n<span class=\"hljs-keyword\">using<\/span> System.Collections.Generic;\r\n\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MyCollection<\/span> : <span class=\"hljs-title\">IEnumerable<\/span>&lt;<span class=\"hljs-title\">int<\/span>&gt;\r\n{\r\n    <span class=\"hljs-keyword\">private<\/span> List&lt;<span class=\"hljs-built_in\">int<\/span>&gt; list = <span class=\"hljs-keyword\">new<\/span> List&lt;<span class=\"hljs-built_in\">int<\/span>&gt;();\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">MyCollection<\/span>()<\/span>\r\n    {\r\n        list.Add(<span class=\"hljs-number\">1<\/span>);\r\n        list.Add(<span class=\"hljs-number\">2<\/span>);\r\n        list.Add(<span class=\"hljs-number\">3<\/span>);\r\n        list.Add(<span class=\"hljs-number\">4<\/span>);\r\n    }\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> IEnumerator&lt;<span class=\"hljs-built_in\">int<\/span>&gt; <span class=\"hljs-title\">GetEnumerator<\/span>()<\/span>\r\n    {\r\n        <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-built_in\">int<\/span> i <span class=\"hljs-keyword\">in<\/span> list)\r\n        {\r\n            <span class=\"hljs-keyword\">yield<\/span> <span class=\"hljs-keyword\">return<\/span> i;\r\n        }\r\n    }\r\n\r\n    IEnumerator IEnumerable.GetEnumerator()\r\n    {\r\n        <span class=\"hljs-keyword\">return<\/span> GetEnumerator();\r\n    }\r\n}\r\n\r\n<span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">Program<\/span>\r\n{\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">static<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Main<\/span>()<\/span>\r\n    {\r\n        MyCollection collection = <span class=\"hljs-keyword\">new<\/span> MyCollection();\r\n\r\n        <span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-built_in\">int<\/span> i <span class=\"hljs-keyword\">in<\/span> collection)\r\n        {\r\n            Console.WriteLine(i);\r\n        }\r\n    }\r\n}\r\n<\/code><\/pre>\n<p>In this example, the MyCollection class implements the IEnumerable interface and uses the yield keyword in the GetEnumerator() method to return elements from the integer collection. In the Main method, we use a foreach loop to iterate through the MyCollection object and print out each integer element.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C#, iterators can be used to traverse collections. They are a special type of method that allows us to sequentially access the elements in a collection without exposing the internal implementation details of the collection. The steps for traversing a collection using an iterator are as follows: Implement a method in the collection class [&hellip;]<\/p>\n","protected":false},"author":14,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_import_markdown_pro_load_document_selector":0,"_import_markdown_pro_submit_text_textarea":"","footnotes":""},"categories":[1],"tags":[3933,381,3193,3934,3935],"class_list":["post-4414","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-c-iterators","tag-c-programming","tag-collection-traversal","tag-ienumerable","tag-yield-keyword"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.5 (Yoast SEO v21.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Using C# Iterators Effectively - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn how to effectively use C# iterators to traverse collections. Discover the power of yield keyword and IEnumerable interface implementation.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Using C# Iterators Effectively\" \/>\n<meta property=\"og:description\" content=\"Learn how to effectively use C# iterators to traverse collections. Discover the power of yield keyword and IEnumerable interface implementation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/\" \/>\n<meta property=\"og:site_name\" content=\"Blog - Silicon Cloud\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-03-14T01:26:29+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-31T07:33:54+00:00\" \/>\n<meta name=\"author\" content=\"Noah Thompson\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:site\" content=\"@SiliCloudGlobal\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Noah Thompson\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/\"},\"author\":{\"name\":\"Noah Thompson\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a\"},\"headline\":\"Using C# Iterators Effectively\",\"datePublished\":\"2024-03-14T01:26:29+00:00\",\"dateModified\":\"2025-07-31T07:33:54+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/\"},\"wordCount\":193,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"C# iterators\",\"C++ Programming\",\"Collection Traversal\",\"IEnumerable\",\"yield keyword\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/\",\"name\":\"Using C# Iterators Effectively - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-14T01:26:29+00:00\",\"dateModified\":\"2025-07-31T07:33:54+00:00\",\"description\":\"Learn how to effectively use C# iterators to traverse collections. Discover the power of yield keyword and IEnumerable interface implementation.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Using C# Iterators Effectively\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"name\":\"Silicon Cloud Blog\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\",\"name\":\"Silicon Cloud Blog\",\"url\":\"https:\/\/www.silicloud.com\/blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"contentUrl\":\"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png\",\"width\":1024,\"height\":1024,\"caption\":\"Silicon Cloud Blog\"},\"image\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/SiliCloudGlobal\/\",\"https:\/\/twitter.com\/SiliCloudGlobal\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a\",\"name\":\"Noah Thompson\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g\",\"caption\":\"Noah Thompson\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/noahthompson\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Using C# Iterators Effectively - Blog - Silicon Cloud","description":"Learn how to effectively use C# iterators to traverse collections. Discover the power of yield keyword and IEnumerable interface implementation.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/","og_locale":"en_US","og_type":"article","og_title":"Using C# Iterators Effectively","og_description":"Learn how to effectively use C# iterators to traverse collections. Discover the power of yield keyword and IEnumerable interface implementation.","og_url":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-14T01:26:29+00:00","article_modified_time":"2025-07-31T07:33:54+00:00","author":"Noah Thompson","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Noah Thompson","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/"},"author":{"name":"Noah Thompson","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a"},"headline":"Using C# Iterators Effectively","datePublished":"2024-03-14T01:26:29+00:00","dateModified":"2025-07-31T07:33:54+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/"},"wordCount":193,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["C# iterators","C++ Programming","Collection Traversal","IEnumerable","yield keyword"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/","url":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/","name":"Using C# Iterators Effectively - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-14T01:26:29+00:00","dateModified":"2025-07-31T07:33:54+00:00","description":"Learn how to effectively use C# iterators to traverse collections. Discover the power of yield keyword and IEnumerable interface implementation.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/how-to-use-iterators-to-iterate-through-a-collection-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Using C# Iterators Effectively"}]},{"@type":"WebSite","@id":"https:\/\/www.silicloud.com\/blog\/#website","url":"https:\/\/www.silicloud.com\/blog\/","name":"Silicon Cloud Blog","description":"","publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.silicloud.com\/blog\/#organization","name":"Silicon Cloud Blog","url":"https:\/\/www.silicloud.com\/blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","contentUrl":"https:\/\/www.silicloud.com\/blog\/wp-content\/uploads\/2023\/11\/EN-SILICON-Full.png","width":1024,"height":1024,"caption":"Silicon Cloud Blog"},"image":{"@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/SiliCloudGlobal\/","https:\/\/twitter.com\/SiliCloudGlobal"]},{"@type":"Person","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/2e83cc6ab9f60d36921c2d0f9f280f4a","name":"Noah Thompson","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/350e537e1530ede2762ee0237e877d6693f4f7163ab4f303202cc9a6b27b6cb4?s=96&d=mm&r=g","caption":"Noah Thompson"},"url":"https:\/\/www.silicloud.com\/blog\/author\/noahthompson\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4414","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/users\/14"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=4414"}],"version-history":[{"count":2,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4414\/revisions"}],"predecessor-version":[{"id":149074,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/4414\/revisions\/149074"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=4414"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=4414"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=4414"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}