По моему скромному мнению, здесь могут быть две причины: область применения и реализация на уровне фреймворка (компилятора, если будет угодно).
1)Область применения
Лямбда применяется, когда на вход требуется делегат типа Func, Action, Predicate, обработчик события и прочее. И нужно это, дабы не плодить миллионы однострочных хендлеров для миллионов входных типов, улучшить читабельность и концентрацию, чтобы не носится как бешеный по всему исходнику. Плюс позволяет не создавать отдельный метод, если он нужен только один раз.
Локальная функция имеет те же преимущества, но позволяет обернуть любой код. Например, если нужно посчитать несколько значений по одному и тому же алгоритму.
2)Могу ошибаться, но логично предположить, что реализация у них разная.
Лямбда аллоцируется в памяти, а локалка, скорее всего, работает по принципу inline-функций и разворачивается на этапе компиляции.
1)Область применения
Лямбда применяется, когда на вход требуется делегат типа Func, Action, Predicate, обработчик события и прочее. И нужно это, дабы не плодить миллионы однострочных хендлеров для миллионов входных типов, улучшить читабельность и концентрацию, чтобы не носится как бешеный по всему исходнику. Плюс позволяет не создавать отдельный метод, если он нужен только один раз.
Локальная функция имеет те же преимущества, но позволяет обернуть любой код. Например, если нужно посчитать несколько значений по одному и тому же алгоритму.
2)Могу ошибаться, но логично предположить, что реализация у них разная.
Лямбда аллоцируется в памяти, а локалка, скорее всего, работает по принципу inline-функций и разворачивается на этапе компиляции.