yield return 和yield break

這個仍是有點意思,兩個都是有返回的意思,可是區別在哪裏呢? 1.return 會銷燬函數的局部變量,下次調用的時候又會產生新的值 2.yield 當退出函數的時候,變量人然存在,函數下次調用的時候變量仍然存在。網絡

"yield break"用來代表迭代結束,跳出迭代函數

如下示例來源網絡:post

class A:IEnumerable { private int[] array=new int[10]; public IEnumrator GetEnumerator() { for(int i=0;i<10;i++) { yield return array[i]; } } }

若是你只想讓用戶訪問ARRAY的前8個數據,則可作以下修改.這時將會用到yield break,修改函數以下spa

public IEnumrator GetEnumerator() { for(int i=0;i<10;i++) { if(i<8) yield return array[i]; else yield break; } }

這樣,則只會返回前8個數據.code

"yield break"用來代表迭代結束,跳出迭代it

下面是個例子,若是你定義這樣一個迭代函數:table

int i = 0; while (true) { if (i < 5) { yield return i; } else { yield break; } i++; } Console.Out.WriteLine("沒法執行~");
相關文章
相關標籤/搜索