« 2008年4月 | トップページ | 2008年6月 »

2008年5月26日 (月)

LINQ独自拡張時の遅延実行

C#のyield returnに相当するキーワードがVBにないという話ですが、前回も書いたように私はこのことはそれほど気にならないのです。
確かにyield returnは便利な機能ですが、これがないとできないという要件レベルの機能は多分ないと思うからです。とは言え、VBに導入されれば喜んで使うつもりです。

でもLINQのことを考えるとなんだか煮え切らない気持ちになります。

というのもLINQのいろいろな機能はC#のyield returnで実装されているからです。
これが具体的に影響するのは次の2点です。
1.VBで独自にLINQのキーワードを定義しても遅延実行できない。
2.VBで独自にLINQのキーワードを定義した場合List(Of T)などIEnumerable(Of T)を実装するクラスを媒介して値を戻す必要がある。

(具体例は少し下のリンク先にあります。)

このことが気になっていたので、先日マイクロソフトのセミナーに参加した時にたまたまお話しすることができたMVPのけろ-みおさんと、マイクロソフトの小高さんに聞いてみました。

結果、けろ-みおさんの方で要点まで整理していただきました。
http://techbank.jp/Community/blogs/mymio/archive/2008/05/25/788.aspx
この中でけろ-みおさんは拡張メソッドの中でさらにLINQを使うという面白い試行も紹介しています。
しかも、そのLINQはスパイスが効いています。VBのLen関数をうまくLINQで表現されています。

ちなみにLINQのキーワードを独自定義するにはIEnumerable(Of T)に対する拡張メソッドを作成します。

話は変わりますがマイクロソフトは無料で質のいいセミナーをしばしば開催しています。みなさんもマイクロソフトのサイトをチェックしてみてください。
http://www.microsoft.com/japan/msdn/events/offline/

今回私が参加したのはこの中の「さあ、できることから」というやつです。参加と言っても前でしゃべる人ではなく一般人として参加してきました。
技術的には基本的なことがらが多かったですが、実際の画面操作を見ながらいろいろな話をきけてとても参考になりました。ほぼ同じ内容を6月以降地方でも実施するようですからお近くにお住まいの方は足を運んでみてはどうでしょうか?

| | コメント (3) | トラックバック (0)

« 2008年4月 | トップページ | 2008年6月 »