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( 2 8 ))
        {
            Console.Write(
" {0}  " , i);
        }
    }
}

得到的结果是:

2   4   8   16   32   64   128   256  

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

你可能感兴趣的:(yield)