[.NET]yield returnの使用例(C#) [Programming .NET Tips]
[はじめに]
C#には「yield」キーワードがありますが、
他の言語と比べて特殊でわかりにくいので、使い方の備忘録を掲載します。
※「yield」は、
他の言語(JavaScript、Perl、Python等)でも採用されつつありますが。。。
「yield」は、
オブジェクト指向のデザインパターンのIteratorパターンの実装で利用されます。
Iteratorパターンとは、多数の集合に対してその内部の実装を意識することなく、
逐次処理するためのデザインパターンです。
C#では、.NET Framework 2.0(Visual Studio 2005)から
「yield」が導入されました。
.NET Framework 1.1(Visual Studio .NET 2003)以前の版で、
Iteratorパターンを実装するには、
IEnumerableインタフェース、IEnumeratorインタフェースを実装したクラスを
記述する必要がありましたが、
.NET Framework 2.0(Visual Studio 2005)以降では、
それらのクラスは「yield return」で代用され、
Iteratorパターンの実装がより簡潔になりました。
[サンプルコード]
以下、2つのサンプルコードを掲載します。
2つのサンプルコードは、各々独立して動作します。
[ご参考]
C#には「yield」キーワードがありますが、
他の言語と比べて特殊でわかりにくいので、使い方の備忘録を掲載します。
※「yield」は、
他の言語(JavaScript、Perl、Python等)でも採用されつつありますが。。。
「yield」は、
オブジェクト指向のデザインパターンのIteratorパターンの実装で利用されます。
Iteratorパターンとは、多数の集合に対してその内部の実装を意識することなく、
逐次処理するためのデザインパターンです。
C#では、.NET Framework 2.0(Visual Studio 2005)から
「yield」が導入されました。
.NET Framework 1.1(Visual Studio .NET 2003)以前の版で、
Iteratorパターンを実装するには、
IEnumerableインタフェース、IEnumeratorインタフェースを実装したクラスを
記述する必要がありましたが、
.NET Framework 2.0(Visual Studio 2005)以降では、
それらのクラスは「yield return」で代用され、
Iteratorパターンの実装がより簡潔になりました。
[サンプルコード]
以下、2つのサンプルコードを掲載します。
2つのサンプルコードは、各々独立して動作します。
| |
[C#]yield returnの使用例(その2) |
| |
[C#]yield returnの使用例(その2) |
[ご参考]
Iteratorパターンについて |
デザインパターン「Iterator」-Qiita |
コメント 0