람다식 (lambda)
람다 식은 대리자 또는 식 트리 형식을 만드는 데 사용할 수 있는 익명 함수입니다. 람다 식을 사용하여 인수로 전달되거나 함수 호출 값으로 반환되는 로컬 함수를 쓸 수 있습니다. 람다 식은 LINQ 쿼리 식을 작성하는 데 특히 유용합니다.
람다 식을 만들려면 람다 연산자 => 왼쪽에 입력 매개 변수를 지정하고(있는 경우) 다른 쪽에 식이나 문 블록을 삽입합니다.
예를 들어 람다 식 x => x * x는 이름이 x인 매개 변수를 지정하고 x 제곱 값을 반환합니다. 다음 예제와 같이 대리자 형식에 이 식을 할당할 수도 있습니다.
람다식은 다음과 같이 작성 할 수 있습니다.
delegate int TestDelegate(int _number);
static void Main(string[] args)
{
TestDelegate Test = x => x * x; //람다식
int number = Test(5);
Console.WriteLine(number);
}
[결과]
람다식 종류
식 람다 (Expression Lambdas)
=> 연산자의 오른쪽에 식이 있는 람다 식을 식 람다라고 합니다. 식 람다는 식 트리(C# 및 Visual Basic)를 만드는 데 광범위하게 사용됩니다.
형식 : (input parameters) => expression
#사용 예
(x, y) => x == y
(int x, string s) => s.Length > x
() => SomeMethod()
문 람다 (Statement Lambdas)
문 람다는 다음과 같이 중괄호 안에 문을 지정한다는 점을 제외하면 식 람다와 비슷합니다.
형식 : (input parameters) => {statement;}
#사용 예
delegate void TestDelegate(string s);
....
TestDelegate myDel = n => { string s = n + " " + "World"; Console.WriteLine(s); };
myDel("Hello");
람다식은 다음과 같은 특성을 가지고 있습니다.
- 람다 식과 대리자 형식에 포함된 매개 변수 수가 같아야 합니다.
- 람다 식의 각 입력 매개 변수는 해당되는 대리자 매개 변수로 암시적으로 변환될 수 있어야 합니다.
- 람다 식의 반환 값(있는 경우)은 대리자의 반환 형식으로 암시적으로 변환될 수 있어야 합니다.
람다 식의 규칙
1. 캡처된 변수는 해당 변수를 참조하는 대리자가 가비지 수집 대상이 될 때까지 가비지 수집되지 않습니다.
2. 람다 식에 사용된 변수는 외부 메서드에 표시되지 않습니다.
3. 람다 식의 return 문에 의해서는 바깥쪽 메서드가 반환되지 않습니다.
4. 람다 식은 바깥쪽 메서드에서 ref 또는 out 매개 변수를 직접 캡처할 수 없습니다.
점프문의 대상이 블록 외부에 있는 경우 람다 식에 람다 함수 내에 있는 goto 문, break 문 또는 continue 문을 포함할 수 없습니다. 대상이 블록 내에 있는 경우 람다 함수 블록 외부에 점프문을 사용해도 오류가 발생합니다
비동기 람다 , 표준 쿼리 연산자와 람다 식 , 트리식은 다음에..
[참고]
람다식 [MSDN]
https://msdn.microsoft.com/ko-kr/library/bb397687.aspx
'프로그래밍 > C#' 카테고리의 다른 글
[C#] 무명 메서드(Anonymous Methods) (0) | 2016.09.29 |
---|---|
[C#] IEnumerable , IEnumerator 인터페이스 (0) | 2016.09.29 |
[C#] 값 형식 & 참조형식 (Value Type & Reference Type) (0) | 2016.09.25 |
[C#] 대리자 (Delegate) - 델리게이트 (0) | 2016.09.25 |
[C#] 박싱 & 언박싱 (Boxing & UnBoxing) (0) | 2016.09.25 |