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

  • 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();
        }
    }
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
yield returnC#的一个关键字,用于在迭代器方法返回一个元素,并暂停迭代器的执行,直到下一次迭代。通过使用yield return,可以在不立即计算所有元素的情况下,逐个返回元素。 引用\[1\]展示了一个使用yield return实现的过滤器方法。该方法通过遍历初始数据集合,并返回大于2的元素。每次调用迭代器方法时,只返回一个元素,并在下一次迭代时继续执行。 引用\[2\]展示了一个不使用yield return的实现。该方法通过创建一个结果列表,并在遍历初始数据集合时,将大于2的元素添加到列表。最后,返回结果列表。 引用\[3\]展示了一个正确使用yield return的示例。该示例使用yield return返回一个包含指定数量的Customer对象的迭代器。在使用foreach循环遍历迭代器时,只打印ID小于1000的Customer对象,并在遇到ID大于等于1000的对象时终止循环。 总结来说,yield returnC#用于在迭代器方法逐个返回元素的关键字。它可以帮助我们在不立即计算所有元素的情况下,按需返回元素,并暂停迭代器的执行。 #### 引用[.reference_title] - *1* *2* [C#yield return用法分析](https://blog.csdn.net/wojiuguowei/article/details/124604083)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [C# yield return详解。](https://blog.csdn.net/csdn2990/article/details/129664309)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^control_2,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值