yield關鍵字向編譯器指示它所在的方法是迭代器塊。編譯器生成乙個類來實現迭代器塊中標的行為。
在迭代器中,yieid關鍵字與return關鍵字結合使用,向列舉器物件提供值。這是乙個返回值,例如,在foreach語句的每一次迴圈中返回的值。yieid關鍵字也可與break結合使用,表示迭代結束。
using system.collections;
namespace chap5demo
public linkedlistnode last
public linkedlistnode addlast(object node)
else
return newnode;
}public ienumerator getenumerator()}}
public
class linkedlistnode
public
linkedlistnode(object
value)
public linkedlistnode next
public linkedlistnode prev
}}
在yieid return語句中,將計算expression並將結果以值的形式放回給列舉器物件。
在yieid return語句中,控制權將無條件地返回給迭代器的呼叫方,該呼叫方列舉器物件的 ienumerator.movenext 方法(或其對應的泛型 system.collections.generic.ienumerable)或 dispose 方法。
yield 語句只能出現在 iterator 塊中,這種塊可作為方法、運算子或訪問器的主體實現。這類方法、運算子或訪問器的體受以下約束的控制:
不允許不安全塊。
方法、運算子或訪問器的引數不能是 ref 或 out。
yield return 語句不能放在 try-catch 塊中的任何位置。該語句可放在後跟 finally 塊的 try 塊中。
yield break 語句可放在 try 塊或 catch 塊中,但不能放在 finally 塊中。
yield 語句不能出現在匿名方法中。有關更多資訊,請參見匿名方法(c# 程式設計指南)。
當和 expression 一起使用時,yield return 語句不能出現在 catch 塊中或含有乙個或多個 catch 子句的 try 塊中。
**「停留的風」
(侵刪)
c 中的yield關鍵字
原文 今天講到迭代器,對迭代器中yield關鍵字做了研究。說起yield,不得不先說說迭代器。迭代器是c 2.0中的新功能,有了它,我們就可以在自己的類或者結構中支援foreach迭代而不必實現整個ienumerable介面,我們只需要提供乙個迭代器,即可遍歷類中的資料結構。當編譯器檢測到迭代器時,...
C 中的yield關鍵字
yield 關鍵字yield 在迭代器塊中用於向列舉數物件提供值或發出迭代結束訊號。迭代器塊有兩個特殊語句 yield return yield break 迭代器塊 迭代器塊是有乙個或多個yield語句的 塊。下面三種型別的 塊中的任意一種都可以是迭代器塊 方法主體 訪問器主體 運算子主體 yie...
C 中yield關鍵字解析
前段時間了解到yield關鍵字,一直覺得還不錯。今天給大家分享一下yield關鍵字的用法。yield return 返回集合不是一次性返回所有集合元素,而是一次呼叫返回乙個元素。具體如何使用yield return 返回集合呢?我們一起往下面看吧。yield return 和yield break ...