在咱們使用foreach的時候其實每個集合都是實現是IEnumerable接口的 , 若是沒有實現你循環確定是行不通的, 那麼假如沒有實現咱們本身怎麼實現呢,這個是yield是最好的幫助:express
public static IEnumerable<int> Power(int number, int exponent) { yield return 3; yield return 5; yield return 8; }
static void Main(string[] args) { var result = Power(2, 8); foreach (int i in result) { Console.Write("{0} ", i); } Console.ReadKey(); }
結構確定是 3 5 8函數
注意: yield的返回類型必定要是IEnumerable, 經過 foreach 語句或 LINQ 查詢來使用迭代器方法。 foreach 循環的每次迭代都會調用迭代器方法。 迭代器方法運行到 yield return 語句時,會返回一個 expression,並保留當前在代碼中的位置。 當下次調用迭代器函數時執行從該位置從新啓動。 能夠使用 yield break 語句來終止迭代。 他的好處就是不須要咱們在手動去實現迭代, 簡便代碼, 如此而已,固然現實中須要實現的狀況並非不少code