Ну, это работает работает:
Expression<Func<int, int>> exp = n => n;
LambdaExpression lambda = exp;
Обратите внимание, что Expression<TDelegate>
происходит от LambdaExpression
.
Я думаю,причина, по которой вы не можете просто использовать LambdaExpression
в качестве типа, заключается в том, что тип n
(в вашем примере) не может быть выведен.
Учтите, что вы также не можете этого сделать,в основном по той же причине:
// What is this? An Action? A ThreadStart? What?
Delegate d = () => Console.WriteLine("Hi!");
В то время как вы можете сделать это:
Action a = () => Console.WriteLine("Hi!");
Delegate d = a;
По сути, это то же самое.