読者です 読者をやめる 読者になる 読者になる

いろいろ備忘録日記

主に .NET と Python絡みのメモを公開しています。

VBでのラムダ式 (.net framework 3.5)


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??)では
複数行のラムダを記述する事が出来るようになります。


以下、参照リソースです。


上記参考リソースに記述されている次のVisualBasicではほとんど
C#と変わらない書き方が出来るようになってますね。


元々、すごく書きやすく読みやすい言語だと思いますので
2010に期待大です。