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之后中断循环;
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;即每次都返回一个数据。
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;即每次都返回一个数据。