2008-08-24 11 views
20

나는 Lambda Expressions가 C#에 매우 강력한 추가 기능이라는 것을 읽었지 만, 나는 그들 자신에 의해 신비하게 느껴진다. 내 인생을 어떻게 향상 시키거나 코드를 개선 할 수 있을까요? 누구든지 그러한 표현을 배우기위한 훌륭한 자료를 가리킬 수 있습니까?람다 식을 잘 사용하고 어떻게 사용하는지 배울 수 있습니까?

그들은 지옥처럼 시원해 보이지만 asp.net 개발자로서 어떻게 일상 생활과 관련이 있습니까?

편집 : 예를 들어 주셔서 감사 드리며 Eric White의 기사 링크에 감사드립니다. 나는 아직도 그 사람들을 소화하고있다. 빠른 질문 하나 : 람다 식은 쿼리 이외의 다른 용도에 유용합니까? 필자가 본 모든 예는 쿼리 구조입니다.

+0

좋은 답변이지만 이전에 질문을 받았습니다. 다른 [질문] (http://stackoverflow.com/questions/16501/what-is-a-lambda-function)은 좋은 자료입니다. –

답변

9

는 '인라인 (in-line)'기능을 작성하는 편리한 방법 이외의 다른 많은 것도

람 바어 식을 쿼리 이외의 유용 람다 표현식 없습니다.

그래서 그들은 별도의 함수 인 것처럼 호출 될 수있는 코드를 원한다면 실제로 유용합니다.하지만 실제로 호출자 내부에 작성됩니다. (파일의 같은 위치에 관련 코드를 저장하는 것 외에도 다양한 범위의 재미있는 게임을 플레이 할 수 있습니다. 참고 자료는 '클로저'를 참조하십시오.)

쿼리와 관련없는 사용 예 lamba는 ThreadPool.QueueUserWorkItem으로 시작하는 비동기식 작업을 수행하는 코드 일 수 있습니다. 중요한 점은 C# 2 소개 인 익명 대리자 또는 일반 클래스 멤버 함수를 사용하여 작성할 수 있다는 것입니다.

http://blogs.msdn.com/jomo_fisher/archive/2005/09/13/464884.aspx은이 모든 것들에 대한 훌륭한 단계별 소개로서 도움이 될 것입니다.

6

람다 (Lambdas)는 기능 프로그래밍을 C#으로 가져 왔습니다. 이들은 익명의 함수로 다른 특정 함수에 값으로 전달 될 수 있습니다. LINQ에서 가장 많이 사용되었습니다. 만약 evenNumbers 통해 람다

x=> x % 2 == 0 

을 이제 다음의 foreach 때 myInts하는 필터로서인가

List<int> myInts = GetAll(); 
IEnumerable<int> evenNumbers = myInts.Where(x => x % 2 == 0); 

:

여기 인위적인 예이다.

많은 중첩 된 IF 조건문과 루프가있는 복잡한 알고리즘의 가독성을 높이는 데 유용합니다.

4

다음은 람다와 함께 할 수있는 뭔가 멋진의 간단한 예입니다 :

List<int> myList = new List<int>{ 1, 2, 3, 4, 5, 6, 7, 8, 9 }; 
myList.RemoveAll(x => x > 5); 
//myList now == {1,2,3,4,5} 

removeAll 메 방법은 술어를 일치하는 모든 제거 얻을 (argurments 소요 부울을 반환하는 대리자를)합니다. 람다 식을 사용하면 실제로 술어를 선언하는 것보다 간단 해집니다.