Programming with C#/C# 기초문법

[C# 기초문법] 9. 람다식(Lambda Expression)

laboputer 2015. 1. 29. 21:11



 

람다식(Lambda Expression)

 C#에는 람다식을 지원합니다. 람다식은 익명 메소드(Anonymous Function)를 좀 더 쉽게 만들기 위해 사용합니다.

 

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

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

 

 

 delegate (int a, int b)

{

return a+b;

}

 (int a, int b) => a+b;

 (a,b) => a+b;

 

위 세가지 방법은 모두 같은 익명메소드를 의미합니다.

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

 

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

(매개변수_목록) =>

{

//코드

}

 

람다식 예제를 보겠습니다.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace CsharpStudy
{
    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));

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

 

이와 같이 익명 메소드를 만들기 위해 별개의 델리게이트를 선언하는 번거로운 일이 있어서 C# 은 Func 델리게이트와 Action 델리게이트를 지원합니다.

Func 델리게이트는 결과를 반환하는 메소드를 참조하기 위해, Action 델리게이트는 반환형식이 없는 메소드 참조를 위해서 사용합니다.

 

 

지금까지 람다식에 대해서 정리해보았습니다.

 

 


<참고문헌>

뇌를 자극하는 C# 4.0 프로그래밍 - 박상현 저