一、yield return
该语句可以实现在 foreach 循环中,在其他方法边遍历边输出。如下:
class Program { private List<int> list = new List<int>(); //给集合添加元素 private void Dimo() { for (int i = 0; i < 11; i++) { list.Add(i); } } //输出偶数(一般方法无法实现一边遍历一边在其他方法中输出, //在其他方法中只能输出最后的结果。如下) IEnumerable<int> GetAllEvenNumber() { Dimo(); List<int> result = new List<int>(); foreach (int item in list) { if (item%2 == 0) { result.Add(item); } } return result; } //使用 yield return 算法 IEnumerable<int> GetAllEventNumberByYieldReturn() { Dimo(); foreach (int item in list) { if (item%2 == 0) { yield return item; } } yield break; } //方法测试 private void Test() { Console.WriteLine("一般方法测试:"); foreach (int item in GetAllEvenNumber()) { Console.WriteLine(item); } Console.WriteLine("yield return 方法测试:"); foreach (int item in GetAllEventNumberByYieldReturn()) { Console.WriteLine(item); } } static void Main(string[] args) { Program obj = new Program(); obj.Test(); Console.ReadKey(); } }
-- 输出结果 --
一般方法测试:
0
2
4
6
8
10
yield return 方法测试:
0
2
4
6
8
10
0
2
4
6
8
10
解析:
一般方法是把结果全部加载到内存中再遍历,而 yield return 方法则是边遍历边输出。