码迷,mamicode.com
首页 > Windows程序 > 详细

关于C# yield 你会使用吗?

时间:2018-10-19 02:10:02      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:add   var   取出   条件   rabl   reac   一个   lin   中间   

   假设有这样一个需求:在一个数据源(下面代码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 变量值,前台遍历调用遍历输出即可

关于C# yield 你会使用吗?

标签:add   var   取出   条件   rabl   reac   一个   lin   中间   

原文地址:https://www.cnblogs.com/mhg215/p/9798474.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!