本文摘自PHP中文网,作者黄舟,侵删。
1. foreachC#编译器会把foreach语句转换为IEnumerable接口的方法和属性。
1 2 3 4 |
|
foreach语句会解析为下面的代码段。
调用GetEnumerator()方法,获得数组的一个枚举
在while循环中,只要MoveNext()返回true,就一直循环下去
用Current属性访问数组中的元素
1 2 3 4 5 |
|
2. yield语句
yield语句的两种形式:
1 |
|
使用一个yield return语句返回集合的一个元素
包含yield语句的方法或属性是迭代器。迭代器必须满足以下要求
a. 返回类型必须是IEnumerable、IEnumerable<T>、IEnumerator或 IEnumerator<T>。
b. 它不能有任何ref或out参数
yield return语句不能位于try-catch快。yield return语句可以位于try-finally的try块
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
|
yield break语句可以位于try块或catch块,但是不能位于finally块
下面的例子是用yield return语句实现一个简单集合的代码,以及用foreach语句迭代集合
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
|
使用yield return语句实现以不同方式迭代集合的类:
相关阅读 >>
c# invoke 和 begininvoke之间的区别详解
c#中异步编程4async与await异步程序开发的实例分析
c#如何利用filesystemwatcher控件实现的文件监控的具体示例分享
更多相关阅读请进入《foreach》频道 >>

C#高级编程(第11版) C# 7 & .NET Core 2.0(.NET开发经典名著)
作者:[美]克里斯琴·内格尔(Christian Nagel)著。出版时间:2019年3月。