Это не неявное преобразование в обычном смысле - это трюк с компилятором.Компилятор определяет, какой из них ожидается из контекста, а затем компилирует его либо как делегат (скрытый метод в вашем классе), либо как выражение (кусок кода, который создает выражение, вызывая методы на System.Linq.Expressions.Expression
).
По этой причине вы не можете напрямую назначить лямбда-выражение переменной типа object
или var
, помимо прочего, потому что компилятор должен знать, имеете ли вы в виду делегатили выражение.