2010年10月07日

指定した複数の値を繰り返す

   このエントリーをはてなブックマークに追加 Clip to Evernote
前回の記事の続きです。

前回示した false true を繰り返す以下のコードは、bool型しか扱えないので、使い道が限られています。
任意の型にも対応させれば、使い道がありそうです。
ジェネリックスの出番ですね。
というクラスを作れば、
とか、
とか、いろいろ使えます。

foreach も使いたいということであれば、以下のようにGetEnumerable メソッドを追加します。
そうすれば、
なんて、書けますね。

ここまで書くと、別に要素が2つに限定することもないなーということで、
シーケンスを受け取る拡張メソッドを書いてみました。
これを使うコード例を以下に示します。
これだと、foreachでしか使えないんじゃないのと思う人もいると思いますが、いえいえ、次のような書き方もできます。
でも、使い勝手は良くないです。ラムダ式を返す部分をメソッドにしてしまったほうが良いかもしれません。
興味のある方は、EnumerableExtentions クラスにメソッドを追加してみてください。


この記事へのコメント
同じようなことをするのに、
IEnumerable とか、IEnumerator を実装して・・とか、
ちょっと考えていたんですが、
拡張メソッドで充分ですね。
すばらしい!
Posted by BLUEPIXY at 2010年10月08日 21:29
BLUEPIXYさんに褒めていただき、光栄です。
yield return もなかった、初期のC#で、これをやろうとすると
とんでもなく大変でしたが、言語の進化は有りがたいです。
Posted by Gushwell at 2010年10月09日 09:51
 

この記事へのトラックバックURL

http://trackback.blogsys.jp/livedoor/gushwell/52076085