3
나는 C#으로 폐쇄와 비트를 연주하고 심지어 그러나 아무것도 정말이 문제 가해야한다는 나에게 소리 쳤다 없다 생산 - 투기 응용 프로그램에서 그들을 작성 또는 만이 될 수했습니다 클로저를 사용하여 해결되었습니다.시나리오
클로저가 특히 유용 할 때 문제가 있습니까? 또한 C# 4.0에 클로저가있는 문제가 있습니까?
감사
나는 C#으로 폐쇄와 비트를 연주하고 심지어 그러나 아무것도 정말이 문제 가해야한다는 나에게 소리 쳤다 없다 생산 - 투기 응용 프로그램에서 그들을 작성 또는 만이 될 수했습니다 클로저를 사용하여 해결되었습니다.시나리오
클로저가 특히 유용 할 때 문제가 있습니까? 또한 C# 4.0에 클로저가있는 문제가 있습니까?
감사
는 그들과 함께 할 수 없습니다 수 아무것도, 클로저 컴파일러 기능보다는 플랫폼 기능입니다 감안할.
컴파일러가 손으로 사용하는 모든 코드를 작성할 수 있습니다 (물론, 표현식 트리와 컴파일러가 언어에 노출되지 않은 일부 IL 명령어에 액세스 할 수 있음).
그러나 은이 아니므로 바깥 쪽 변수에 대한 액세스가 필요한 LINQ에서 클로저를 사용하는 것이 좋습니다. 람다 식 대리자 내에서 age
액세스하는 고정이다
public List<Person> FilterByAge(IEnumerable<Person> people, int age)
{
return people.Where(p => p.Age >= age).ToList();
}
한다 : 예를 들어. 개는에 관해서는
:
이
모든 성능 혜택 ? 또한 LINQ에서 클로저를 사용하지 않는 것이 왜 나는 미친 짓인가? 비록, 그 코드 샘플의 요구 사항과 함께 LINQ에서 변수를 둘러싸는 것에 접근하는 다른 방법은 없다고 생각합니다. – dotnetdev
@dotnetdev : 대안은 컴파일러가하는 것처럼 많은 여분의 클래스를 만드는 것입니다. 바이 바이, 가독성. 물론 동일한 코드이기 때문에 성능은 동일합니다. –
나중에. 감사. 클로저가 확실한 옵션이라고 생각합니다. – dotnetdev