第二课:c#中yield return 语法解析

    技术2025-12-16  16

    yield return 所属方法与一般方法不同。在方法中,如果遇到yield return ,会离开当前方法体,执行引用该方法体的语句,再返回。yield return 用于循环遍历中,返回IEnumberable.yield return 用于暂时中止循环遍历yield return 适用于在一个海量的循环方法中,中间不断的push 出单次循环所得到的数据等类似的情况。

    关于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(); } }
    Processed: 0.015, SQL: 9