您的位置:知识库 » 数据库

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

作者: 横刀天笑  来源: 博客园  发布时间: 2008-09-23 13:26  阅读: 14019 次  推荐: 3   原文链接   [收藏]  

系列文章导航:

走进Linq--Linq横空出世篇

走进Linq-辉煌的背后

走进Linq-Linq大观园

不能不说的C#特性-对象集合初始化器

不能不说的C#特性-匿名类型与隐式类型局部变量

不能不说的C#特性-扩展方法

不能不说的C#特性-匿名方法和Lambda表达式

不能不说的C#特性-迭代器(上)及一些研究过程中的副产品

不能不说的C#特性-迭代器(下),yield以及流的延迟计算

走进Linq-Linq to Objects(上)基础篇

走进Linq-Linq to Objects(下)实例篇

走进Linq-Linq to SQL感性认识篇

走进Linq-Linq to SQL How do I(1)

走进Linq-Linq to SQL How do I(2)

走进Linq-Linq to SQL How do I(3)

走进Linq-How do I(4)拾遗补零篇第一节

走进Linq-Linq to SQL源代码赏析 Table的获取过程

走进Linq-Linq to SQL源代码赏析之Provider的初始化

走进Linq-Linq to SQL源代码赏析,通过Linq to SQL看Linq


题目:从0遍历到20(不包括20),输出遍历到的每个元素,并将大于2的所有数字放到一个IEnumerable中返回

解答1:(我以前经常这样做)

static IEnumerable<int> WithNoYield()
        {
            IList
<int> list = new List<int>();
            
for (int i = 0; i < 20; i++)
            {
                Console.WriteLine(i.ToString());
                
if(i > 2)
                    list.Add(i);
            }
            
return list;
        }

解答2:(自从有了C# 2.0我们还可以这样做)

static IEnumerable<int> WithYield()
        {
            
for (int i = 0; i < 20; i++)
            {
                Console.WriteLine(i.ToString());
                
if(i > 2)
                    
yield return i;
            }
        }

如果我用下面这样的代码测试,会得到怎样的输出?

测试1:

测试WithNoYield()

static void Main()
        {
            WithNoYield();
            Console.ReadLine();
        }

测试WithYield()

 static void Main()
        {
            WithYield();
            Console.ReadLine();
        }

测试2:

测试WithNoYield()

static void Main()
        {
            
foreach (int i in WithNoYield())
            {
                Console.WriteLine(i.ToString());
            }
            Console.ReadLine();
        }

测试WithYield()

static void Main()
        {
            
foreach (int i in WithYield())
            {
                Console.WriteLine(i.ToString());
            }
            Console.ReadLine();
        }

给你5分钟时间给出答案,不要上机运行

3
0
标签:linq C# 迭代器

数据库热门文章

    数据库最新文章

      最新新闻

        热门新闻