LINQPad の例:
void Main()
{
One(i => PrintInteger(i));
One(PrintInteger);
Two(i => PrintInteger(i));
// Two(PrintInteger); - won't compile
}
static void One(Action<int> a)
{
a(1);
}
static void Two(Expression<Action<int>> e)
{
e.Compile()(2);
}
static void PrintInteger(int i)
{
Console.WriteLine(i);
}
行のコメントを外すTwo(PrintInteger);
と、エラーが発生します。
「メソッド グループ」から「System.Linq.Expressions.Expression<System.Action<int>>」に変換できません
これはConvert Method Group to Expressionに似ていますが、「なぜ」に興味があります。機能にはお金、時間、労力がかかることを理解しています。もっと面白い説明があるかどうか疑問に思っています。