C# 복습하기 13) 람다식

람다식

 - 메서드를 하나의 식(expression)으로 표현한 것.

매개변수 => 식 // => 연산자를 이용하여 표현한다.

 

람다식으로 익명 메서드 선언하기

 1) 기존 방법

delegate int Calculate(int a, int b)

public static void Main()
{
    Calculate Calc = delegate(int a, int b)
                     {
                         return a + b;
                     };
}

 2) 람다식을 사용한 방법

  - delegate, return 키워드를 생략가능하다.

delegate int Calculate(int a, int b)

public static void Main()
{
    Calculate Calc = (int a, int b) => a + b;
}

 

람다식 형식 유추

 - 대리자의 선언 코드로부터 형식을 유추한다.

 - 한 단계 더 간소화할 수 있으나 명시성은 좀 떨어진다. 

delegate int Calculate(int a, int b)

public static void Main()
{
    Calculate Calc = (a, b) => a + b;
}

 

문 형식의 람다식

 - 식 형식의 람다식은 반환형 식이 없는 무명 함수를 만들 수 있으며,

   문 형식의 라다식은 반환형 식이 있는 무명 함수를 만들 수 있다.

delegate void MyDelegate();
//...

void Main()
{
    MyDelegate my = ( ) => // 매개 변수가 없다면 비워둔다.
              {
                  Console.WriteLine("A");
              };
}

 

Func와 Action으로 무명 함수 만들기

 - 무명 함수를 만들 때마다 대리자를 선언해야 하기 때문에 번거롭다.

 - 이를 위해 미리 Func와 Action이라는 대리자가 제공된다.

 

Func

 - 결과를 반환하는 메서드를 참조할 수 있다.

 - 형식 매개변수 중 가장 마지막 것이 반환 형식이다. ( 반드시 한 개 이상의 반환 형식을 가진다)

Func<int, int> myFunc = (x) => x*2; // 입력 매개 변수 int, 반환 매개변수 int
int result = myFunc(5); // result에는 10이 저장됨.

 

Action

 - 반환 형식이 없는 메서드를 참조할 수 있다.

 - 반환보다는 일련의 작업을 수행하는 것을 목적으로 한다.

Action myAction = () => Console.WriteLine("A");

 

식 트리 (Expression Tree)

 - 식을 트리로 표현한 자료 구조.

 - 한 부모가 단 두 개의 자식을 가질 수 있는 이진트리(Binary Tree).

ms : 식 트리(C#)
https://docs.microsoft.com/ko-kr/dotnet/csharp/programming-guide/concepts/expression-trees/

 

식으로 구성된 멤버(Expression-Bodied member)

 - 람다식을 사용하여 멤버의 본문을 식(Expression)으로 구현 가능.

public int MyMember
{
    get => list.Member;
    set => list.Member = value;
}

 

 

 

 

 

 

'C# Study > C# 기초' 카테고리의 다른 글

C# 복습하기 15) 리플렉션  (0) 2021.04.14
C# 복습하기 14) LINQ  (0) 2021.04.13
C# 복습하기 12) 대리자와 이벤트  (0) 2021.04.12
C# 복습하기 11) 예외 처리  (0) 2021.04.12
C# 복습하기 10) 일반화 프로그래밍  (0) 2021.04.11

댓글

Designed by JB FACTORY