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() {
List names = 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に期待大です。