VB10でサポートされる複数行ラムダ

青柳 臣一 ブログ(趣味系) [VB10] Visual Basic 2010 の新機能


Lambda Expressions (Visual Basic) | Microsoft Docs



これまでVisual Basicのラムダでは式形式での記述だけが可能であり、複数行記述するようなステートメント型はサポートされていませんでした。

ラムダ式
関数の本体は、ステートメントではなく式である必要があります。本体を関数プロシージャへの呼び出しで構成することはできますが、サブ プロシージャへの呼び出しは指定できません。



VB10では、これが下記のような構文でサポートされます。


Visual Basic

Dim message As String = "メッセージ:"
 
AddHandler Button1.Click, Sub()
                                  message += "ステートメント型ラムダが可能になりました。"
                                  MessageBox.Show(message)
                              End Sub


SubとEnd Subの分だけちょっと長くはなりますが、「これがVBで書けたら…」と思っていた人は多いのではないでしょうか。


他にも「自動実装するプロパティ」、「コレクション初期化子」などもサポートされていますので、これでC#とほぼ同じことができる?ようになるでしょうか。