0.람다식이란
함수를 만드는 방식 중 하나 정도로 이해하자.
익명함수를 지칭하는 용어로 이름없이 내용물만 정의하는 방식이다.
1.람다식 형식
//식 람다
(매개변수목록) => 식
//문 형식의 람다
(매개변수목록) =>
{
문장1;
문장2;
...;
문장N;
}
2.람다식으로 무명함수 정의하기
-무명함수 : 람다식으로 만드는 익명메소드
-무명함수를 작성하기 위해서는 먼저 대리자로 무명함수의 모습을 결정
delegate int Calculate(int a, int b);
static void Main(string[] args){
Calculate calc = (int a, int b) => a+b;
Console.WriteLine(calc(1,2));
}
delegate int Calculate (int a, int b);
static void Main(string[] args){
Calculate calc = (a,b) => a+b;
Console.WriteLine (calc(1,2));
}
3.문 형식의 람다식
- 람다식 바디를 식이 아닌 코드 블록으로 작성
delegate void DoSomething();
static void Main(string[] args){
DoSomething DoIt = () =>
{
Console.WriteLine("123");
Console.WriteLine("456");
Console.WriteLine("789");
};
DoIt();
}
4.Func 대리자와 Action 대리자
-.NET 라이브러리에 사전 정의되어 있는 대리자
-익명 메소드/ 무명 함수 정의를 위해 매번 대리자를 새롭게 정의하는 불편을 제거
-일반화와 최대 16개 매개변수를 지원
-Func대리자 : 반환값이 있는 익명 메소드/무명 함수용 대리자
-Action대리자 : 반환값이 없는 익명 메소드/무명 함수용 대리자
//델리게이트 Func
public delegate TResult Func<out TResult>()
public delegate TResult Func<in T, out TResult>(T arg)
Func<int> func1 = () => 10;//입력 매개변수는 없고, 무조건 10을 반환
Console.WriteLine(func1());
Func<int, int> func2 = (x) => x*2;//입력매개변수는 int 형식 하나, 반환 형식도 int 하나
Console.WriteLine(func2(3));//6출력
//델리게이트 Action
public delegate void Action<>()
public delegate void Action<in T>(T arg)
public delegate void Action<in T1, in T2>(T1 arg1, T2 arg2)
Action act1 = () => Console.WriteLine("Action()");
act1();
Action<double, double> act3 = (x,y) =>
{
double pi = x/y;
Console.WriteLine("Action <T1,T2>({0},{1}):{2}" , x,y,pi);
};
act3(22.0,7.0);
5.식 트리( Expression Tree)
-코드를 트리 자료 구조로 표현한 것
-C#에서는 런타임에 식트리를 생성하고 실행할 수 있다
(프로그램 실행 중에 추가적인 코드를 생성하여 실행가능)
-LINQ, DLR에서 사용된다.
-식트리 구축에 주로 람다식을 사용한다.
'3_c# > C#문법' 카테고리의 다른 글
C# LINQ (0) | 2024.12.29 |
---|---|
C# Delegate: 대리자 (1) | 2024.11.20 |
C# 일반화 프로그래밍 (0) | 2024.11.20 |
C# 배열, 컬렉션, 인덱서 (0) | 2024.11.20 |
C# 프로퍼티 (1) | 2024.11.20 |