DevExpressのブログにてポストされていたので
今更ながら、VBでのラムダの書き方をメモメモ。
C#と大きく違う点は、単一の式しかかけない事。
Imports System Imports System.Collections.Generic Namespace Test Public Class Sample Public Shared Sub Main() Dim names As New List(Of String)(new String(){"name1", "name2", "name3"}) Dim namesQuery = names.Where(Function(n) n.EndsWith("2")) For Each n In namesQuery Console.WriteLine(n) Next End Sub End Class End Namespace
using System; using System.Collections.Generic; using System.Linq; namespace Test { public class Sample { public static void Main() { Listnames = new List {"name1", "name2", "name3"}; var namesQuery = names.Where(n => n.EndsWith("2")); // このタイプのラムダはVisualBasic2008では記述出来ない. var namesQuery2 = names.Where(n => { Console.WriteLine("[Debug] {0}", n); return n.EndsWith("2"); }); foreach(var n in namesQuery) { Console.WriteLine(n); } foreach(var n in namesQuery2) { Console.WriteLine(n); } } } }
でも、次のVisualBasic (version 10??, version 2010??)では
複数行のラムダを記述する事が出来るようになります。
以下、参照リソースです。
- ラムダ式
- [VB10] Visual Basic 2010 の新機能
- Walkthrough: Office Programmability in Visual Basic and C# in VS 2010 (Lisa Feigenbaum)
- Lambda Expressions in VB
上記参考リソースに記述されている次のVisualBasicではほとんど
C#と変わらない書き方が出来るようになってますね。
元々、すごく書きやすく読みやすい言語だと思いますので
2010に期待大です。