Сценарии, когда использовать замыкания - PullRequest
3 голосов
/ 08 декабря 2010

Я немного поиграл с замыканиями в C # и даже написал их в приложениях для производственной спецификации, однако, на самом деле мне ничего не кричало, что эта проблема должна быть, или может только быть, решено с использованием затвора.

Есть ли проблема, когда замыкания особенно полезны для решения? Также есть ли ошибки с замыканиями в C # 4.0?

Спасибо

1 Ответ

6 голосов
/ 08 декабря 2010

Учитывая, что замыкания являются функцией компилятора, а не платформой, нет ничего, что не может сделать с ними.

Вы можете написать весь код, который компилятор использует вручную (ну, за некоторыми исключениями, когда дело доходит до деревьев выражений, и у компилятора есть доступ к некоторым инструкциям IL, которые не предоставляются языком).

Тем не менее, вы будете злиться , а не , чтобы использовать замыкания в LINQ, где вам нужен доступ к переменным. Например:

public List<Person> FilterByAge(IEnumerable<Person> people, int age)
{
    return people.Where(p => p.Age >= age).ToList();
}

Это лямбда-выражение является замыканием, получая доступ к age из делегата.

Что касается готчей:

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...