yield是迭代器的状态机,可以做到延迟加载,按需获取
var numbers = GetNumbers();
foreach(var item in numbers){
//此处如果只取3个,则GetNumber里面的循环只会执行到3
}
public IEnumerable<int> GetNumbers(){
for(int i=0;i<10;i++){
yield return this.Get(i);
if(i==3){
yield break; //yield可以跟break,return,返回值必须是IEnumerale
}
}
}
public int Get(int num){
return num;
}