yield的中文是什么意思呢?
在金山詞霸上面的翻譯是:
vt.
vi.
n.
個人覺得比較符合yield關鍵字在C#中的意思是退讓,退位,讓權。
yield關鍵字主要是在yield迭代器塊中使用,使用yield的時候,C#編譯器會創建一個狀態機來保存當前我們迭代器塊中的狀態,返回當前需要返回的一個變量,然后暫時退出當前迭代器塊。之后當下次需要調用迭代器塊的時候,編譯器會根據之前保存的狀態然后進行你所定義的操作之后返回變量。
下面是一個例子:
創建一個IEnumerableExample類,實現IEnumerable接口,并在GetEnumerator方法中使用yield關鍵字進行返回變量。
public class IEnumerableExample:IEnumerable { PRivate object[] values; public IEmuerableExample(object[] values) { this.values = values; } public IEnumerator GetEnumerator() { for(int i=0;i<values.Length;i++) { yield return values[i]; } } }
主函數:
static void Main(string[] args) { object[] values={'a','b','c','d'}; IEmuerableExample ie = new IEmuerableExample(values); foreach (var item in ie) { Console.WriteLine(item); } Console.ReadKey(); }
輸出為:
這就是本人對于yield關鍵字的愚見,如有錯誤,請多多指正,謝謝。
新聞熱點
疑難解答