Lambda Expression

Ricon·2025년 1월 23일
0

기초 이론

목록 보기
4/6

람다식이란?

람다식은 익명 메소드를 만드는 하나의 방법이다.
람다식으로 만드는 익명 메소드는 무명 함수(Anonymous Function)라는 이름으로 부른다.

람다식 또한 메소드와 마찬가지로 Parameter와 Return값을 가진다.
매개변수_목록 => 식
람다식에서 매개변수는 왼쪽에, 식은 오른쪽에 위치한다.

//예시
delegate int Calculate(int a, int b) //익명 메소드를 만들기 위한 delegate

static void main(string[] args)
{
	Calculate calc = (int a, int b) => a+b;
    
    //C# 컴파일러는 Type Inference(형식 유추) 라는 기능을 제공하여 매개변수의 형식을 제거할 수 있다.
    Calculate calc = (a, b) => a + b;
    
    //람다식을 사용하지 않는다면
    Caculate calc = delegate(int a, int b)
    						{
                            	return a + b;
                            };
}

Statement Lambda

람다식은 => 연산자의 오른편에 식 대신 {}로 코드 블록을 만들어서 작성한다

(매개변수_목록) => {
					문장1;
                    문장2;
                    ...
				 }

예시

delegate void DoSomething();

static void Main(string[] args)
{
	DoSomething DoIt = ( ) => //매개변수가 없는 경우에는 ()에 공백
    				{
                    	Console.WriteLine("출력1");
                    	Console.WriteLine("출력2");
                    	Console.WriteLine("출력3");
                    };
                    
	DoIt();
}

Func, Action

익명 메소드와 무명 함수는 선언하기 전에 매번 Delegate를 선언해줘야한다. 이러한 문제를 해결하기 위해 Func, Action 대리자를 사용할 수 있다. Func는 Return값이 있는 메소드를, Action은 Return값이 없는 메소드를 참조한다

Func

Func 대리자는 Return값이 존재하는 메소드를 참조한다. Parameter가 0개인 Func부터 16개까지 존재하며 형식 매개변수중 가장 마지막 매개변수는 Return 형식을 나타낸다

//예시
Func<int> func1 = () => 10; //input Parameter가 없으며 무조건 10을 반환
Console.WriteLine(func1()); //10출력

// 처음 있는 int는 입력 매개변수, 마지막에 있는 int는 Return 매개변수
Func<int, int> func2 = (x) => x * 2; 
Console.WriteLine(func2(3)); // 6출력

Action

Action 대리자는 Func 대지라와 비슷하지만 Return값이 없다는 차이점만 있다.
Action 대지라 또한 입력 Parameter가 0개부터 16개까지 존재한다.

Action act1 = () => Console.WriteLine("Action:); //매개변수가 없는 Action
act1();

int result = 0;
Action<int> act2 = (x) => result = x * x; // 람다식 밖에서 선언한 result에 x제곱 저장

act2(3);
Console.WriteLine($"Result : {result}"); // 9 출력

0개의 댓글