{"id":14841,"date":"2024-03-15T10:03:27","date_gmt":"2024-03-15T10:03:27","guid":{"rendered":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/"},"modified":"2025-08-06T13:34:20","modified_gmt":"2025-08-06T13:34:20","slug":"what-is-the-usage-of-ienumerable-in-c","status":"publish","type":"post","link":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/","title":{"rendered":"What is the usage of IEnumerable in C#?"},"content":{"rendered":"<p>In C#, IEnumerable is an interface that represents the type capable of being enumerated over a collection. It defines a method GetEnumerator() that returns an object implementing the IEnumerator interface, used to iterate through the elements in the collection.<\/p>\n<p>By using the IEnumerable interface, you can create custom collection classes that can be iterated through using foreach statement. By implementing the GetEnumerator() method, you can return an IEnumerator object which contains the elements in the collection and methods for moving the current position.<\/p>\n<p>Here is an example code using IEnumerable:<\/p>\n<pre class=\"post-pre\"><code><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MyCollection<\/span> : <span class=\"hljs-title\">IEnumerable<\/span>\r\n{\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-built_in\">int<\/span>[] data;\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        <span class=\"hljs-comment\">\/\/ \u521d\u59cb\u5316\u96c6\u5408\u6570\u636e<\/span>\r\n        data = <span class=\"hljs-keyword\">new<\/span> <span class=\"hljs-built_in\">int<\/span>[] { <span class=\"hljs-number\">1<\/span>, <span class=\"hljs-number\">2<\/span>, <span class=\"hljs-number\">3<\/span>, <span class=\"hljs-number\">4<\/span>, <span class=\"hljs-number\">5<\/span> };\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u5b9e\u73b0IEnumerable\u63a5\u53e3\u7684GetEnumerator\u65b9\u6cd5<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> IEnumerator <span class=\"hljs-title\">GetEnumerator<\/span>()<\/span>\r\n    {\r\n        <span class=\"hljs-keyword\">return<\/span> <span class=\"hljs-keyword\">new<\/span> MyEnumerator(data);\r\n    }\r\n}\r\n\r\n<span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">class<\/span> <span class=\"hljs-title\">MyEnumerator<\/span> : <span class=\"hljs-title\">IEnumerator<\/span>\r\n{\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-built_in\">int<\/span>[] data;\r\n    <span class=\"hljs-keyword\">private<\/span> <span class=\"hljs-built_in\">int<\/span> position = <span class=\"hljs-number\">-1<\/span>;\r\n\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-title\">MyEnumerator<\/span>(<span class=\"hljs-params\"><span class=\"hljs-built_in\">int<\/span>[] data<\/span>)<\/span>\r\n    {\r\n        <span class=\"hljs-keyword\">this<\/span>.data = data;\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u5b9e\u73b0IEnumerator\u63a5\u53e3\u7684MoveNext\u65b9\u6cd5<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-built_in\">bool<\/span> <span class=\"hljs-title\">MoveNext<\/span>()<\/span>\r\n    {\r\n        position++;\r\n        <span class=\"hljs-keyword\">return<\/span> (position &lt; data.Length);\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u5b9e\u73b0IEnumerator\u63a5\u53e3\u7684Reset\u65b9\u6cd5<\/span>\r\n    <span class=\"hljs-function\"><span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-keyword\">void<\/span> <span class=\"hljs-title\">Reset<\/span>()<\/span>\r\n    {\r\n        position = <span class=\"hljs-number\">-1<\/span>;\r\n    }\r\n\r\n    <span class=\"hljs-comment\">\/\/ \u5b9e\u73b0IEnumerator\u63a5\u53e3\u7684Current\u5c5e\u6027<\/span>\r\n    <span class=\"hljs-keyword\">public<\/span> <span class=\"hljs-built_in\">object<\/span> Current\r\n    {\r\n        <span class=\"hljs-keyword\">get<\/span>\r\n        {\r\n            <span class=\"hljs-keyword\">return<\/span> data[position];\r\n        }\r\n    }\r\n}\r\n\r\n<span class=\"hljs-comment\">\/\/ \u4f7f\u7528\u81ea\u5b9a\u4e49\u7684\u96c6\u5408\u7c7b\u8fdb\u884c\u904d\u5386<\/span>\r\nMyCollection collection = <span class=\"hljs-keyword\">new<\/span> MyCollection();\r\n<span class=\"hljs-keyword\">foreach<\/span> (<span class=\"hljs-built_in\">int<\/span> num <span class=\"hljs-keyword\">in<\/span> collection)\r\n{\r\n    Console.WriteLine(num);\r\n}\r\n<\/code><\/pre>\n<p>In the example above, the MyCollection class implements the IEnumerable interface and returns a MyEnumerator object that implements the IEnumerator interface. This allows the MyCollection object to be iterated through in a foreach loop, printing out its elements.<\/p>\n<p>It is important to note that in C#, there is also a generic version of the IEnumerable interface, which is more commonly used and allows for specifying the type of elements in the collection. The generic version of the IEnumerable interface is similar to the non-generic version, but the returned IEnumerator object is of type IEnumerator and the type of the Current property is also T.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In C#, IEnumerable is an interface that represents the type capable of being enumerated over a collection. It defines a method GetEnumerator() that returns an object implementing the IEnumerator interface, used to iterate through the elements in the collection. By using the IEnumerable interface, you can create custom collection classes that can be iterated through [&hellip;]<\/p>\n","protected":false},"author":6,"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":[453,1402,299,1404,1403],"class_list":["post-14841","post","type-post","status-publish","format-standard","hentry","category-uncategorized","tag-development","tag-guide","tag-programming","tag-technology","tag-tutorial"],"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>What is the usage of IEnumerable in C#? - Blog - Silicon Cloud<\/title>\n<meta name=\"description\" content=\"Learn about what is the usage of ienumerable in c#?. Comprehensive guide with examples and best practices.\" \/>\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\/what-is-the-usage-of-ienumerable-in-c\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"What is the usage of IEnumerable in C#?\" \/>\n<meta property=\"og:description\" content=\"Learn about what is the usage of ienumerable in c#?. Comprehensive guide with examples and best practices.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-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-15T10:03:27+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-08-06T13:34:20+00:00\" \/>\n<meta name=\"author\" content=\"Benjamin Taylor\" \/>\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=\"Benjamin Taylor\" \/>\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\/what-is-the-usage-of-ienumerable-in-c\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/\"},\"author\":{\"name\":\"Benjamin Taylor\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9\"},\"headline\":\"What is the usage of IEnumerable in C#?\",\"datePublished\":\"2024-03-15T10:03:27+00:00\",\"dateModified\":\"2025-08-06T13:34:20+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/\"},\"wordCount\":202,\"publisher\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#organization\"},\"keywords\":[\"Development\",\"guide\",\"programming\",\"technology\",\"tutorial\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/\",\"url\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/\",\"name\":\"What is the usage of IEnumerable in C#? - Blog - Silicon Cloud\",\"isPartOf\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/#website\"},\"datePublished\":\"2024-03-15T10:03:27+00:00\",\"dateModified\":\"2025-08-06T13:34:20+00:00\",\"description\":\"Learn about what is the usage of ienumerable in c#?. Comprehensive guide with examples and best practices.\",\"breadcrumb\":{\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.silicloud.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"What is the usage of IEnumerable in C#?\"}]},{\"@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\/ac801fe9549a25960ce48aa2e0a691c9\",\"name\":\"Benjamin Taylor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g\",\"caption\":\"Benjamin Taylor\"},\"url\":\"https:\/\/www.silicloud.com\/blog\/author\/benjamintaylor\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"What is the usage of IEnumerable in C#? - Blog - Silicon Cloud","description":"Learn about what is the usage of ienumerable in c#?. Comprehensive guide with examples and best practices.","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\/what-is-the-usage-of-ienumerable-in-c\/","og_locale":"en_US","og_type":"article","og_title":"What is the usage of IEnumerable in C#?","og_description":"Learn about what is the usage of ienumerable in c#?. Comprehensive guide with examples and best practices.","og_url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/","og_site_name":"Blog - Silicon Cloud","article_publisher":"https:\/\/www.facebook.com\/SiliCloudGlobal\/","article_published_time":"2024-03-15T10:03:27+00:00","article_modified_time":"2025-08-06T13:34:20+00:00","author":"Benjamin Taylor","twitter_card":"summary_large_image","twitter_creator":"@SiliCloudGlobal","twitter_site":"@SiliCloudGlobal","twitter_misc":{"Written by":"Benjamin Taylor","Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/#article","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/"},"author":{"name":"Benjamin Taylor","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/ac801fe9549a25960ce48aa2e0a691c9"},"headline":"What is the usage of IEnumerable in C#?","datePublished":"2024-03-15T10:03:27+00:00","dateModified":"2025-08-06T13:34:20+00:00","mainEntityOfPage":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/"},"wordCount":202,"publisher":{"@id":"https:\/\/www.silicloud.com\/blog\/#organization"},"keywords":["Development","guide","programming","technology","tutorial"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/","url":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/","name":"What is the usage of IEnumerable in C#? - Blog - Silicon Cloud","isPartOf":{"@id":"https:\/\/www.silicloud.com\/blog\/#website"},"datePublished":"2024-03-15T10:03:27+00:00","dateModified":"2025-08-06T13:34:20+00:00","description":"Learn about what is the usage of ienumerable in c#?. Comprehensive guide with examples and best practices.","breadcrumb":{"@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.silicloud.com\/blog\/what-is-the-usage-of-ienumerable-in-c\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.silicloud.com\/blog\/"},{"@type":"ListItem","position":2,"name":"What is the usage of IEnumerable in C#?"}]},{"@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\/ac801fe9549a25960ce48aa2e0a691c9","name":"Benjamin Taylor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.silicloud.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ec2e3d3e2d525fd148047c4520ae7c1cdccd1f4b48a1a488422b31f04f345c14?s=96&d=mm&r=g","caption":"Benjamin Taylor"},"url":"https:\/\/www.silicloud.com\/blog\/author\/benjamintaylor\/"}]}},"_links":{"self":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/14841","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\/6"}],"replies":[{"embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/comments?post=14841"}],"version-history":[{"count":1,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/14841\/revisions"}],"predecessor-version":[{"id":48275,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/posts\/14841\/revisions\/48275"}],"wp:attachment":[{"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/media?parent=14841"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/categories?post=14841"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.silicloud.com\/blog\/wp-json\/wp\/v2\/tags?post=14841"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}