[C# 기초] 10. 람다식(Lambda expression)


함수형 언어에서 사용하는 람다식은 코드를 간결하게 만들어주는데 이를 C#에서도 사용할 수 있도록 지원해줍니다.

람다식 (Lambda-expression)


함수형 프로그래밍에서 사용하는 람다식이라는 것이 있습니다. 람다식은 익명 메소드(Anonymous Function)를 아주 간결하게 표현할 수 있습니다. C#에서도 이 람다식을 사용할 수 있습니다.

사용 방법:

(매개변수_목록)  =>  식

예제 코드:

delegate (int a, int b)
{
	return a+b;
}
(int a, int b) => a+b;
(a,b) => a+b;

위 세가지 방법은 모두 같은 기능을 가진 익명 메소드입니다. 첫번째 델리게이트를 람다식을 이용해 두번째 방식처럼 만들 수 있으며, 세번째 방식은 C#에서 형식 유추 (Type Inference) 기능을 제공하기 때문에 매개변수 형식을 제거할 수 있습니다.

문(Statement) 형식의 람다식의 선언 방식은 다음과 같습니다.

사용 방법:

(매개변수_목록) =>
{
	//코드
}

예제 코드:

class Program
{
    delegate int Method(int a, int b);

    static void Main(string[] args)
    {
        Method Add= (a, b) => a+b;
        Console.WriteLine(Add(3, 4)); // 7

        Method Minus = (a, b) =>
            {
                Console.WriteLine("{0} - {1} 의 결과는?", a, b);
                return a - b;
            };
        Console.WriteLine(Minus(5, 3)); // 5 - 3 의 결과는? 2
        
    }
}

위와 같이 익명 메소드를 만들기 위해 별개의 델리게이트를 선언하는 번거로운 일이 있어서 C# 은 Func 델리게이트와 Action 델리게이트를 지원합니다. Func 델리게이트는 결과를 반환하는 메소드를 참조하기 위해, Action 델리게이트는 반환형식이 없는 메소드 참조를 위해서 사용합니다.


이 개념을 알지 못해도 개발하는데는 문제는 없겠지만 간단하게 사용방법만 익혀도 코드가 단순해집니다. 대부분 C# 프로그래머도 자주 사용하니 남들의 코드를 이해하기 위해서라도 사용하는 것이 좋습니다.