Оба примера являются анонимными функциями. Второй из которых использует замыкание для захвата локальных переменных. Время жизни переменной для анонимной функции не влияет на то, создано ли замыкание для его использования. Пока переменная определена вне анонимной функции и используется внутри, будет создано замыкание.
Первая анонимная функция не использует локальное состояние, поэтому не нуждается в закрытии. Он должен компилироваться до статического метода.
Это необходимо, потому что анонимная функция может жить дольше, чем текущая функция. Поэтому все локальные пользователи, используемые в анонимной функции, должны быть перехвачены, чтобы выполнить делегат позднее.