yield关键字

这个关键字在开发过程当中不长用到

说yield之前要先说一下IEnumerable 接口

IEnumerable 接口 :

公开枚举数,该枚举数支持在非泛型集合上进行简单迭代。

简单的迭代就是指foreach循环了

yield关键字:

在迭代器块中用于向枚举数对象提供值或发出迭代结束信号

枚举数对象就好比foreach(object o in objectList)中的o

在下面的示例中,迭代器块(这里是方法 Power(int number, int power))中使用了 yield 语句。当调用 Power 方法时,它返回一个包含数字幂的可枚举对象。注意 Power 方法的返回类型是 IEnumerable(一种迭代器接口类型)。

// yield-example.cs
using System;
using System.Collections;
public class List
{
    
public static IEnumerable Power(int number, int exponent)
    {
        
int counter = 0;
        
int result = 1;
        
while (counter++ < exponent)
        {
            result 
= result * number;
            
yield return result;
        }
    }

    
static void Main()
    {
        
// Display powers of 2 up to the exponent 8:
        foreach (int i in Power(28))
        {
            Console.Write(
"{0} ", i);
        }
    }
}

得到的结果是:

2 4 8 16 32 64 128 256 

yield就好像一个方法调用计数器,针对计数值的不同,返回不同的结果。当最后一种yield流程结束时,就相当于计数器归零。

posted @ 2009-05-13 10:45  liulun  阅读(490)  评论(0编辑  收藏  举报