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