람다식
- 메서드를 하나의 식(expression)으로 표현한 것.
매개변수 => 식 // => 연산자를 이용하여 표현한다.
람다식으로 익명 메서드 선언하기
1) 기존 방법
delegate int Calculate(int a, int b)
public static void Main()
{
Calculate Calc = delegate(int a, int b)
{
return a + b;
};
}
2) 람다식을 사용한 방법
- delegate, return 키워드를 생략가능하다.
delegate int Calculate(int a, int b)
public static void Main()
{
Calculate Calc = (int a, int b) => a + b;
}
람다식 형식 유추
- 대리자의 선언 코드로부터 형식을 유추한다.
- 한 단계 더 간소화할 수 있으나 명시성은 좀 떨어진다.
delegate int Calculate(int a, int b)
public static void Main()
{
Calculate Calc = (a, b) => a + b;
}
문 형식의 람다식
- 식 형식의 람다식은 반환형 식이 없는 무명 함수를 만들 수 있으며,
문 형식의 라다식은 반환형 식이 있는 무명 함수를 만들 수 있다.
delegate void MyDelegate();
//...
void Main()
{
MyDelegate my = ( ) => // 매개 변수가 없다면 비워둔다.
{
Console.WriteLine("A");
};
}
Func와 Action으로 무명 함수 만들기
- 무명 함수를 만들 때마다 대리자를 선언해야 하기 때문에 번거롭다.
- 이를 위해 미리 Func와 Action이라는 대리자가 제공된다.
Func
- 결과를 반환하는 메서드를 참조할 수 있다.
- 형식 매개변수 중 가장 마지막 것이 반환 형식이다. ( 반드시 한 개 이상의 반환 형식을 가진다)
Func<int, int> myFunc = (x) => x*2; // 입력 매개 변수 int, 반환 매개변수 int
int result = myFunc(5); // result에는 10이 저장됨.
Action
- 반환 형식이 없는 메서드를 참조할 수 있다.
- 반환보다는 일련의 작업을 수행하는 것을 목적으로 한다.
Action myAction = () => Console.WriteLine("A");
식 트리 (Expression Tree)
- 식을 트리로 표현한 자료 구조.
- 한 부모가 단 두 개의 자식을 가질 수 있는 이진트리(Binary Tree).
ms : 식 트리(C#)
https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/concepts/expression-trees/
식으로 구성된 멤버(Expression-Bodied member)
- 람다식을 사용하여 멤버의 본문을 식(Expression)으로 구현 가능.
public int MyMember
{
get => list.Member;
set => list.Member = value;
}
'🌍 C# Study > C# 기초' 카테고리의 다른 글
C# 복습하기 15) 리플렉션 (0) | 2021.04.14 |
---|---|
C# 복습하기 14) LINQ (0) | 2021.04.13 |
C# 복습하기 12) 대리자와 이벤트 (0) | 2021.04.12 |
C# 복습하기 11) 예외 처리 (0) | 2021.04.12 |
C# 복습하기 10) 일반화 프로그래밍 (0) | 2021.04.11 |