C#
PR

C# の yield return の挙動

kawa.xxx
記事内に商品プロモーションを含む場合があります

yield って?

単純な英単語として日本語訳すると、(作物、製品などを)産する、(結果などを)引き起こす、譲る。という意味の単語のようです。

どうやって使うの?

C#のキーワードとしての yield は、 IEnumerable を戻り値としたメソッドでコレクションの値を返すためのものです。何が便利かというと、メソッド内に一時的なコレクションを生成しなくとも勝手に暗黙的なコレクションに保存していき、メソッドの処理がすべて完了したらまとめて返してくれるという挙動をします。

雑ですが簡単なサンプルを。

yield サンプル

サンプルのように yield return を含むブロックのことを イテレーターブロックと言います。
GetNameの戻り値にある通り、IEnumerable で返してくれて、中身には “hoge” と “huga” の2つが入っています。
実行結果を見てもわかると思いますが、yield return はその時点で処理を終了させません。

LINQPadで実行すると下記のようになります。
f:id:kawa_xxx:20160220124001p:plain

今回は yield return をベタで2つ書きましたが、 foreach などループの中に書いても同じようになります。

Effective C# 4.0

Effective C# 4.0

参考文献

ABOUT ME
kawa.xxx
都内のIT系企業に勤める会社員。自分の備忘録的なアウトプット用の場所で、ボルダリングやガシェッド、セキュリティ、カメラの話題が中心です。
記事URLをコピーしました