美文网首页
C#的foreach语句

C#的foreach语句

作者: 若水生花啊啊啊 | 来源:发表于2017-12-01 22:14 被阅读0次

为什么foreach可以迭代出一个集合的所有元素?

foreach(var p in persions)
{
Console.WriteLine(p);
}

资料上说:编译器会把foreach的语句翻译为如下代码去执行:

IEnumerator<Person> enumerator = persons.GetEnumerator();
While(enumerator.MoverNext())
{
Person p= enumerator.Current;
Console.WriteLine(p);
}

  1. foreach首先调用GetEnumerator()获取集合的枚举器。而GetEnumerator是在IEnumerable的接口中定义的。所以首先实现IEnumerable的接口来获取Enumerator。
  2. 然后要是实现IEnumerator中定义的接口:MoveNext ,Reset和Current。
  3. 总体看来,实现数组的迭代读取是:先用GetEnumerator来获取数组的xx,不知道获取的是什么。好像是C++的指针,然后靠IEnumerator中固定实现好的方法来循环读取。

难道C#是把C++中的相关的操作组合一下,实现了foreach的方法。这也说明知识是相通的哈。

相关文章

  • C#的foreach语句

    为什么foreach可以迭代出一个集合的所有元素? foreach(var p in persions){Cons...

  • 2017-10-19学习总结

    星期四 晴 今天学了C#的语句,跟C语言的语句一样,只多了一个foreach循环。 老师把每个语句都讲了一遍,...

  • C# 循环结构打印各种图形

    C# 提供了以下几种循环类型 1、 for/foreach 循环 foreach (数组,集合讲完再讲):多次...

  • C# 枚举器和可枚举类型

    在C#中能够使用foreach语句遍历数组和List等对象的原因就在于这些对象是可枚举类型,这些可枚举类型能够获取...

  • 2017.10.19C#

    上午老师讲了选择语句,if语句,switch语句 循环语句,for,while,do…while,foreach ...

  • Foreach语句

    显式类型迭代声明 foreach(Type Identifier in ArrayName) 隐式类型迭代声明 f...

  • PDO中遍历结果集的注意事项

    --->在用foreach遍历结果集的时候,在foreach里面的声明的变量无需在foreach()语句之前声明 ...

  • PHP编程指南(四)控制语句

    if else 语句 switch语句 for循环 普通for循环 for循环嵌套 foreach循环——用于遍历...

  • Intellij Idea个人常用快捷方法笔记

    sout输出语句psvm输出main方法fori输出for语句iter输出foreach语句 Ctrl+Shift...

  • PHP break和continue语句

    break 语句break 语句用于终止本次循环,在 while、do while 和 foreach 循环语句中...

网友评论

      本文标题:C#的foreach语句

      本文链接:https://www.haomeiwen.com/subject/vtzwbxtx.html