关于C# yield 你会使用吗?

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

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

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

        /// 没有使用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;
        }
    }

第二种情况, 代码如下;

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

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

相关文章
|
7月前
|
C#
C#学习相关系列之yield和return的区别
C#学习相关系列之yield和return的区别
120 1
|
7月前
|
SQL 开发框架 .NET
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
EntityFramework数据持久化复习资料3、C#拓展方法与yield关键字使用
57 0
|
C# 索引
C#中的yield
C#中的yield
111 0
|
C# 编译器
C#:foreach语句,yield语句
原文:C#:foreach语句,yield语句 1. foreach语句 C#编译器会把foreach语句转换为IEnumerable接口的方法和属性。 1 foreach (Person p in persons) 2 { 3 Console.WriteLine(p); 4 } foreach语句会解析为下面的代码段。
1042 0
|
C# 编译器
C# yield return 用法与解析
原文:C# yield return 用法与解析 C# yield return 用法与解析 本文参考自:http://www.jb51.net/article/54810.htm    当初没有认真理解 yield 这个关键字,现在又遇到了依旧不理解,为了以后不再为了 yield 困惑,决定好好研究一下 yield 的用法与意义: yield 从字面上理解有“退位,屈服”的意思,转一下弯就理解成“权限转移”,也就是将控制权交给别人,在这里就是把集合里满足条件(如果没有过滤条件,就是全体)的个体的操作转移给另一个对象。
1741 0
|
C#
C#中yield return用法
转载:http://www.jb51.net/article/54810.htm         http://www.cnblogs.com/HunterWei/archive/2012/06/13/csharpyieldreturn.
857 0
|
1月前
|
C# 开发者
C# 一分钟浅谈:Code Contracts 与契约编程
【10月更文挑战第26天】本文介绍了 C# 中的 Code Contracts,这是一个强大的工具,用于通过契约编程增强代码的健壮性和可维护性。文章从基本概念入手,详细讲解了前置条件、后置条件和对象不变量的使用方法,并通过具体代码示例进行了说明。同时,文章还探讨了常见的问题和易错点,如忘记启用静态检查、过度依赖契约和性能影响,并提供了相应的解决建议。希望读者能通过本文更好地理解和应用 Code Contracts。
35 3