在"C#中,什么时候用yield return"中,我们了解到:使用yield return返回集合,不是一次性加载到内存中,而是客户端每调用一次就返回一个集合元素,是一种"按需供给"。本篇来重温yield return的用法,探秘yield背后的故事并自定义一个能达到yield return相同效果的类,最后体验yield break的用法。
□ 回顾yield return的用法
以下代码创建一个集合并遍历集合。
class PRogram{static Random r = new Random();static IEnumerable<int> GetList(int count){List<int> list = new List<int>();for (int i = 0; i < count; i++){list.Add(r.Next(10));}return list;}static void Main(string[] args){foreach(int item in GetList(5))Console.WriteLine(item);Console.ReadKey();}}
使用yield return也能获得同样的结果。修改GetList方法为:
通过断点调试发现:客户端每显示一个集合中的元素,都会到GetList方法去获取集合元素。static IEnumerable<int> GetList(int count){for (int i = 0; i < count; i++){yield return r.Next(10);}}
□ 探密yield
使用yield return获取集合,并遍历。
class Program{public static Random r = new Random();static IEnumerable<int> GetList(int count){for (int i = 0; i < count; i++){yield return r.Next(10);}
新闻热点
疑难解答