关于C# yield 你会使用吗?

   假设有这样一个需求:在一个数据源(下面代码arry)中把其中大于4的数据取出来遍历到前台,怎么做?(不使用linq)

 var arry = new int[] { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10 };

 第一种情况:  不使用yield的情况下(一般人应该都是这样用的)

复制代码
       /// <summary>
        /// 没有使用yield
        /// </summary>
        public static IEnumerable<int> FilterWithOutYield
    {
        get
        {

            var result = new List<int>();
            foreach (var i in arry)
            {
                if (i > 4)
                    result.Add(i);
            }
            return result;
        }
    }    
复制代码

第二种情况, 代码如下;

复制代码
        /// <summary>
        /// 使用yield
        /// </summary>
        public static IEnumerable<int> FilterUseYield
    {
        get
        {
            foreach (var i in arry)
            {
                if (i > 4)
                    yield return i;
            }
        }
    }
复制代码

yield使用场景:在一些特定的数据源里二次条件过滤时,不用再定义一个中间集合去存储,只需yield return 变量值,前台遍历调用遍历输出即可

posted @   realyrare  阅读(919)  评论(4编辑  收藏  举报
编辑推荐:
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
阅读排行:
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
点击右上角即可分享
微信分享提示