Синтаксис лямбда-выражения по сравнению с классом LambdaExpression

Эта строка кода, которая пытается назначить лямбда-выражение типизированной переменной LambaExpression ,

LambdaExpression expr = n => n;

сбой с сообщением об ошибке компиляции:

Невозможно преобразовать лямбда. LambdaExpression expr = n => n; сбой с сообщением об ошибке компиляции: Невозможно преобразовать лямбда ...

Эта строка кода, которая пытается присвоить лямбда-выражение типизированной переменной LambaExpression ,

LambdaExpression expr = n => n;

сбой с сообщением об ошибке компиляции:

Невозможно преобразовать лямбда. LambdaExpression expr = n => n; сбой с сообщением об ошибке компиляции: Невозможно преобразовать лямбда ...

Эта строка кода, которая пытается присвоить лямбда-выражение типизированной переменной LambaExpression ,

LambdaExpression expr = n => n;

сбой с сообщением об ошибке компиляции:

Невозможно преобразовать лямбда. выражение для ввода 'System.Linq.Expressions.LambdaExpression' потому что это не делегат type

Значит, это должен быть тип делегата. Концептуально это кажется мне странным, потому что я могу создать экземпляр LambdaExpression , используя фабричный метод вроде этого.

Factory Lambda из MSDN

LambdaExpression lambdaExpr = Expression.Lambda(
    Expression.Add(
        paramExpr,
        Expression.Constant(1)
    ),
    new List() { paramExpr }
);

, и это не тип делегата.

Это заставляет задуматься, почему лямбда в LambaExpression не может работать?

10
задан John K 26 February 2011 в 00:05
поделиться