C 中yield關鍵字

2021-08-13 12:55:44 字數 1220 閱讀 3175

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 ...