关于IEnumerable和 IEnumerator的理解: IEnumerable和IEnumerator详解
关于unity 协程的理解 unity协程
yield return 案例代码
class Demo2 { private List<int> _NumberArray; //数组集合 public Demo2() { _NumberArray = new List<int>(); for (int i = 0; i < 100; i++) { _NumberArray.Add(i); } } /// <summary> /// 使用yield return算法,有符合条件的值跳出循环,到达引用方直接输出 /// </summary> /// <returns></returns> IEnumerable<int> GetAllEventNumberByYieldReturn() { foreach (var num in _NumberArray) { if (num % 2 == 0) { yield return num; } } yield break; } /// <summary> /// 一般方法,将符合条件的数值添加到result容器中后一并输出 /// </summary> /// <returns></returns> IEnumerable<int> GetAllEvenNumber() { List<int> result = new List<int>(); foreach (int num in _NumberArray) { if (num % 2 == 0) { result.Add(num); } } return result; } public void Test1() { Console.WriteLine("一般方法的测试"); foreach (var item in GetAllEvenNumber()) { Console.WriteLine(item); } } public void Test2() { Console.WriteLine("yield return 方法测试"); foreach (var num in GetAllEventNumberByYieldReturn()) { Console.WriteLine(num); } } static void Main(string[] args) { Demo2 demo2 = new Demo2(); demo2.Test1(); Console.ReadLine(); } }