今回の Visual Studio 2008 の多分、最大の目玉は LINQ です。LINQ というのは Visual Basic/C# 双方に適用される新規の構文です。LINQ の Visual Basic に関連するまとまったアーティクルは MSDN マガジン記載の 『Visual Studio "Orcas" でのクエリの性能を最大限に引き出す』 というアーティクルです。初期の仕様に基づいていますがアーティクルとしては十分に使えます。
関連したアーティクルでは『基本的な本能:拡張メソッド』, 『基本的な本能:ラムダ式』 も面白いです。それぞれ11月号、9月号の記事です。ただ、十分な分量がある記事なので暇な時に読むでいいかとおもいます。どちらも、LINQ を導入するために Visual Basic に追加された機能です。LINQ とは要するに SQL や XML への問い合わせを Visual Basic/C# で書く機能です。で、これを実現するために後付け的にクラスの機能を拡張する"拡張メソッド"と特殊な delegate という形でラムダ式が導入されたというところです。
ラムダ計算はメソッドの定義と実行を抽象化した計算体系です。これは理論としては 1930 年代に考案された比較的古参の話です。元々は関数型プログラミング言語の論理的な基盤です。実際、Microsoft Research の F# 言語の本である Foundations of F# でも pp24, 26 と比較的前のページで出てきます。
この拡張メソッドとラムダ式が取り入れられた経緯は 2007 年 6 月号の『C# 3.0: LINQ の進化の過程と C# のデザインへの影響』がよいアーティクルです。LINQ の Visual Basic でのサンプルは 101 LINQ Samples という MSDN のサンプル集がいいでしょう。C# のコードは先の MSDN マガジンのアーティクルも面白いです。
例えば、Visual Basic 2008 で db.Customers から ContactName と Phone を抽出する動作は 101 LINQ Samples の Select - Anonymous Type 1 のサンプルからこのように書けるとされています。
これを C# で書き換えるとこのようになるでしょう。
単純に言うと今までだと、ADO.NET とかを使ってぐだぐだと書いていた問い合わせを言語の枠内で書けます。で、それを実現するために拡張メソッドや型推論などが使われています。例えば、型推論がなければ特に C# で LINQ の問い合わせの中身の型がなんであるか頭を痛めることになるでしょう。この場合、型推論が効くので C# で q なる変数は object 型ではなく何らかの特定の型として取り扱われます。そうでないと鬼のようなキャストがあちこちで発生し大変見づらいコードになるでしょう。
![]() | Foundations of F# (Expert's Voice in .Net) Robert Pickering Apress 2007-05-28 売り上げランキング : 14833 Amazonで詳しく見る by G-Tools |
![]() | 入門OCaml ~プログラミング基礎と実践理解~ OCaml-Nagoya 毎日コミュニケーションズ 2007-05-22 売り上げランキング : 131664 Amazonで詳しく見る by G-Tools |



