Я думал о разнице между Expression<Func<>>
и Func<>
и задавался вопросом, можно ли преобразовать статический метод в дерево выражений следующим образом:
class Program
{
static void Main(string[] args)
{
Func<int, int> t = x => hrm(x);
Func<int, int> t2 = new Func<int, int>(hrm);
// Works as expected:
Expression<Func<int, int>> et = x => hrm(x);
// Brokenness:
Expression<Func<int, int>> et2 = new Func<int, int>(hrm);
}
static int hrm(int x)
{
return x + 9;
}
}
Что такого особенного во втором "Func <>", что его нельзя преобразовать в выражение, когда первое может?