C# yield

yield有两种使用形式:yield return;和yield break; 他们通常配合枚举器对象IEnumerable(支持非泛型集合上进行简单迭代)使用。

yield return:即取到一个数据后马上返回该数据,不需要全部数据装入数列完毕,这样有效提高了遍历效率。普通的return只返回一个数据,yield return 可在循环中返回符合条件的多个数据。

yield break:在循环中,配合yield return使用。当条件不符合时,停止循环,返回符合条件的列表。

private int[] array=new int[10];    
public IEnumerable GetEnumerator()
{
    for(int i=0;i<10;i++)
    {
        if(i<8)
            yield return array[i];
        else
            yield break;
    }                     
}
//调用GetEnumerator方法后,array中内容:0,1,2,3,4,5,6,7;即碰到yield break之后中断循环;

举例如下:

private int[] array=new int[10];

public IEnumerable GetEnumerator()
{
    for(int i=0;i<10;i++)
    {
        yield return array[i];
    }
}

//调用GetEnumerator方法后,array中内容:0,1,2,3,4,5,6,7,8,9;即每次都返回一个数据。

 

posted on 2011-10-17 11:12  一路前行  阅读(361)  评论(0编辑  收藏  举报