在"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);}
新聞熱點
疑難解答