.NET Framework 4.0 の Expression Trees

出張でしばらくノートPCで作業してたので触れずにいた VS 2010 CTP、ようやく家に戻ってきたので触ってみた。

# 「Virtual PCでの提供なのでメモリ2GB必須」とか言われたら、3年前発売のノートPCで動かせるわけもなく

.NET Framework 4.0 で、Expression Trees がものすごいパワーアップしています。具体的には、

  • 複文
  • 代入文
  • 制御構文

が使えるようになりました。

要するに、今までは Expression Trees の名前通り、式しか書けなかったんですが、4.0 からは文が書けます。
確かに、Expression.Loop とかが増えています。

なのに・・・、ここまではいいのに・・・ C#ラムダ式には相変わらず式しか書けない・・・。以下のコードはエラーになる。

Expression<Func<int, int>> f = x =>
    {
        int y = 1;
        for (; x > 0; --x) y *= x;
        return y;
    };