본문으로 바로가기

[C#] 람다식(Lamdba Expressions)

category Program/C# 2019. 1. 25. 18:04
1. 람다식

람다식은 무명 메소드를 단순한 계산식으로 표현한 것이다. 메소드는 크게 매개변수와 내부 식, 반환값으로 구성되어 있는데, 이들만 가지고 메소드를 계산식으로 표현한다. 

무명 메소드에 비해 상당히 간결하게 표현되는 것을 확인할 수 있다. 람다식은 매개변수로 전해지는 a, b의 타입까지도 생략이 가능하다. ( 똑똑한 컴파일러가 좌항의 델리게이트의 타입을 참고해서 타입을 유추하는 것이다. ) 그럼 람다식에 대한 다음 예제를 작성해 보자.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
    class MainApp
    {
        delegate int MyDelegate(int a, int b);
        delegate void MyDelegate2();
        static void Main(string[] args)
        {
            MyDelegate add = (a, b) => a + b;
            MyDelegate2 lambda = () => Console.WriteLine("람다식");
 
            Console.WriteLine("11 + 22 = {0}", add(1122));
 
            lambda();
        }
    }
cs

2. 문 형식의 람다식 


지금까지의 람다식은 단순한 계산식 하나만을 표현하였다. 그렇다면 람다식 내에서 메소드처럼 다양한 처리를 해줄 순 없을까? 당연히 가능하다. 그냥 메소드처럼 중괄호 내에 작성하면 된다.



그냥 메소드를 간략화 했다고 보면 될 거 같다. 위의 내용을 프로그램으로 작성해서 확인해보자.



1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
    class MainApp
    {
        delegate void MyDelegate(int a, int b);
        static void Main(string[] args)
        {
            MyDelegate Compare = (a, b) =>
            {
                if (a > b)
                {
                    Console.WriteLine("{0}보다 {1}가 크다", b, a);
                }
                else if (a < b)
                {
                    Console.WriteLine("{0}보다 {1}가 크다", a, b);
                }
                else
                {
                    Console.WriteLine("{0},{1}는 같다", a, b);
                }
            };
            Compare(1122);
        }
    }
cs


출처 : https://mrw0119.tistory.com/22?category=585887

'Program > C#' 카테고리의 다른 글

[C#] .NET 용어 요약 #2  (0) 2019.01.29
[C#] .NET 용어 요약  (0) 2019.01.28
[C#] 델리게이트(Delegate)  (1) 2019.01.25
[C#] 프로퍼티 ( Property )  (0) 2019.01.25
[C#] 박싱과 언박싱  (0) 2019.01.24