學習yield關鍵字

2021-08-08 22:21:39 字數 764 閱讀 9596

當使用yield關鍵字時,這就意味著該函式返回的是乙個迭代器(iterator),不用自己維護乙個迭代器內部的狀態管理(比如c++中的itereator,或實現c#中實現的介面iemuerator),其使用模式如下:

yield return ;

yield break;

其中第二種用於for迴圈終止。這樣的模式也就實現了linq的查詢,但注意yield使用要求如下:

1.      迭代器函式不能有ref/out引數。

2.      迭代器函式返回必須是ienumberable、ienumerable、ienumerator或ienumerator。

3.      yield 不能用於匿名函式返回。

4.      yield return不能位於try/catch語句中,可以位於try/finally語句try語句中。

5.      yield break可以位於try/cache語句中,不能位於try/finllay語句finally語句中。

測試**如下:

class program

}public static ienumerablenames

}static void main(string args)

", item);

}foreach (var item in names)

", item);

}console.readline();

}}

具體可參考

:

C 關鍵字之yield

說起yield,不得不先說說迭代器。迭代器是c 2.0中的新功能,有了它,我們就可以在自己的類或者結構中支援foreach迭代而不必實現整個ienumerable介面,我們只需要提供乙個迭代器,即可遍歷類中的資料結構。當編譯器檢測到迭代器時,它將自動生成ienumerable介面的current m...

Python的yield關鍵字

忽然得知python有個叫yield的關鍵字,好奇之下去查了查,花了點時間基本弄明白了,故寫在此備忘,順便充充字數。yield關鍵字用來定義生成器 generator 其具體功能是可以當return使用,從函式裡返回乙個值,不同之處是用yield返回之後,可以讓函式從上回yield返回的地點繼續執行...

C 中yield關鍵字

yield關鍵字向編譯器指示它所在的方法是迭代器塊。編譯器生成乙個類來實現迭代器塊中標的行為。在迭代器中,yieid關鍵字與return關鍵字結合使用,向列舉器物件提供值。這是乙個返回值,例如,在foreach語句的每一次迴圈中返回的值。yieid關鍵字也可與break結合使用,表示迭代結束。usi...