콘텐츠로 건너뛰기
Home » 람다식(Lamda Expression)

람다식(Lamda Expression)

  • by
람다식(Lamda Expression)

람다식

람다식은 무명 메소드를 단순한 계산식으로 표현할수 있다.

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

무명 메소드에 비해 상당히 간결하게 표현되는 것을 확인할수 있다.

람다식은 매개변수로 전해지는 a,b 의 타입까지도 생략이 가능하다.

(똑똑한 컴파일러가 좌항의 델리게이트 타입을 참고해서 타입을 유추하는 것이다.)

그럼 람다식에 대한 다음 예제를 작성해 보자.

class MainApp {
    delegate int MyDelegate(int a, int b);
    delegate void MyDelegate();
    static void Main(string[] args) {
        MyDelegate add = (a, b) => a + b;
        MyDelegate2 lamda = () => Console.WriteLine("람다식");
        Console.WriteLine("11 + 22 = {0}", add(11, 22));
        lamda();
    }
}

문 형식의 람다식

위의 람다식은 단순한 계산식 하나만 표현하였다.

그렇다면 람다식 내에서 메소드 처럼 다양한 처리를 해줄수는 없는것이가?

당연히 가능하다. 그냥 메소드처럼 중괄호 내에 작성하면 된다.

delegate void MyDelegate(int a, int b);
MyDelegate A = (a, b) => {
    if (a > b) {
        Console.WriteLine("{0}의 값이 크다", a);
    } else if (a < b) {
        Console.WriteLine("{0}의 값이 크다", b);
    } else {
        Console.WriteLine("{0} 하고 {1}은 서로 같다.", a, b);
    }
}

그냥 메소드를 간략화 했다고 보면 될것 같다.

위의 내용을 프로그램으로 작성해서 확인해 보자.

class MainApp {
    delegate void MyDelegate(int a, int b);
    static void Main(string[] args) {
        MyDelegate Compare = (a, b) => {
            if (a > b) {
                Console.WriteLine("{0}의 값이 크다", a);
            } else if (a < b) {
                Console.WriteLine("{0}의 값이 크다", b);
            } else {
                Console.WriteLine("{0} 하고 {1}은 서로 같다.", a, b);
            }
        };
        Compare(11, 22);
    }
}

댓글 남기기