デリゲートと式木の文字列表現

ふと思いついて試してみました。

using System;
using System.Linq.Expressions;

class Program
{
  static void Main()
  {
    // コンパイルエラー : 演算子 '.' を 'ラムダ式' 型の
    // オペランドに適用することはできません。
    //Console.WriteLine( ( x => x + 1 ).ToString() );

    // System.Func`2[System.Int32,System.Int32]
    Func<int, int> func = x => x + 1;
    Console.WriteLine( func.ToString() );

    // x => (x + 1)
    Expression<Func<int, int>> expr = x => x + 1;
    Console.WriteLine( expr.ToString() );

    Console.ReadKey();
  }
}

なるほどね。