Учитывая, что замыкания являются функцией компилятора, а не платформой, нет ничего, что не может сделать с ними.
Вы можете написать весь код, который компилятор использует вручную (ну, за некоторыми исключениями, когда дело доходит до деревьев выражений, и у компилятора есть доступ к некоторым инструкциям IL, которые не предоставляются языком).
Тем не менее, вы будете злиться , а не , чтобы использовать замыкания в LINQ, где вам нужен доступ к переменным. Например:
public List<Person> FilterByAge(IEnumerable<Person> people, int age)
{
return people.Where(p => p.Age >= age).ToList();
}
Это лямбда-выражение является замыканием, получая доступ к age
из делегата.
Что касается готчей: