首页 > 后端开发 > C++ > 哪些 C# 对象类型支持 foreach 循环以及它们如何工作?

哪些 C# 对象类型支持 foreach 循环以及它们如何工作?

Susan Sarandon
发布: 2025-01-10 10:48:40
原创
627 人浏览过

Which C# Object Types Support foreach Loops and How Do They Work?

C#中的foreach循环

问:哪些对象类型支持foreach循环?

答: foreach循环的核心使用需要一个返回具有MoveNext()方法和Current属性的对象的GetEnumerator()方法。简单来说,最常见的类型是实现了IEnumerable/IEnumerable<T>的类型。这包括ICollection/ICollection<T>的实现,例如Collection<T>List<T>、数组等等。

它是如何工作的?

一个形如foreach(int i in obj) {...}foreach循环,本质上等同于:

<code class="language-csharp">var tmp = obj.GetEnumerator();
int i; // C# 4.0及之前版本
while(tmp.MoveNext()) {
    int i; // C# 5.0及之后版本
    i = tmp.Current;
    {...} // 你的代码
}</code>
登录后复制

IEnumerator对象(tmp)用于遍历集合的元素,并在每次迭代中将其赋值给循环变量。如果枚举器支持Dispose()方法,则会调用它,就像使用using语句一样。

注意: 循环变量声明“int i”的位置在C# 4.0和C# 5.0之间有所不同。C# 5.0在循环内声明它,而C# 4.0在循环外声明它。当在循环中使用循环变量在闭包或lambda表达式中时,这种区别很重要。

以上是哪些 C# 对象类型支持 foreach 循环以及它们如何工作?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板