본문 바로가기
개발 공식/C#

C# 언어 대리자(delegate)와 람다식(lambda)을 알아보자

by JinCoding 2023. 3. 19.
반응형

 

안녕하세요! 이번 포스팅에서는 C# 언어의 대리자(Delegate)와 람다식(Lambda Expression)에 대해 알아보겠습니다.


대리자

대리자란 다른 메서드를 참조할 수 있는 참조 유형으로, 메서드의 인수로 전달할 수 있습니다.

대리자는 메서드와 동일한 시그니처를 가지며, 대리자 인스턴스를 호출하면 대리자에 연결된 메서드가 실행됩니다.

대리자는 이벤트 처리기와 콜백 메서드 등에 유용하게 사용됩니다.

예를 들어, 버튼을 클릭했을 때 실행되는 이벤트 처리기는 대리자를 사용하여 구현됩니다.

또한 비동기 작업을 처리할 때 콜백 메서드를 사용하는데, 이때도 대리자를 사용합니다.

 

대리자를 선언하는 방법은 다음과 같습니다.

delegate 반환형 대리자이름(매개변수 목록);

 

위 코드에서 반환형은 대리자가 참조하는 메서드의 반환형과 동일합니다. 대리자 이름은 대문자로 시작하는 적절한 이름을 사용하면 됩니다. 매개변수 목록은 대리자가 참조하는 메서드의 매개변수 목록과 동일합니다.

 

다음은 대리자를 사용한 예제입니다. 먼저 AddDelegate라는 대리자를 선언합니다.

delegate int AddDelegate(int a, int b);

 

이제 AddDelegate를 사용하여 CalcDelegate라는 클래스를 구현해보겠습니다.

class CalcDelegate
{
    public int Add(int a, int b)
    {
        return a + b;
    }

    public int Subtract(int a, int b)
    {
        return a - b;
    }
}

 

이제 Main 메서드에서 대리자를 사용하여 CalcDelegate의 Add 메서드를 호출해보겠습니다.

static void Main(string[] args)
{
    CalcDelegate calc = new CalcDelegate();
    AddDelegate add = new AddDelegate(calc.Add);
    int result = add(3, 4);
    Console.WriteLine(result);
}

 

위 코드에서는 CalcDelegate의 인스턴스를 생성하고, AddDelegate를 사용하여 CalcDelegate의 Add 메서드를 참조합니다.

대리자에 전달되는 인수는 Add 메서드의 매개변수와 동일하게 전달됩니다.


람다식

람다식은 C# 3.0부터 추가된 개념으로, 간단하게 함수를 만들어서 사용할 수 있는 방법입니다.

람다식을 사용하면 함수를 직접 만들지 않고도 코드 블록을 넘겨줄 수 있으며, 코드의 길이를 줄이고 가독성을 높일 수 있습니다.

람다식을 대리자와 함께 사용하는 경우는 보통 대리자를 간단하게 만들기 위해 사용됩니다.

예를 들어, 대리자를 이용해 덧셈을 수행하는 함수를 만든다고 가정해보겠습니다.

일반적인 방법으로는 다음과 같이 대리자를 정의하고 덧셈 함수를 만들어야 합니다.

delegate int AddDelegate(int x, int y);

static int Add(int x, int y)
{
    return x + y;
}

static void Main(string[] args)
{
    AddDelegate addDelegate = new AddDelegate(Add);
    int result = addDelegate(3, 4);
    Console.WriteLine(result); // 출력 결과: 7
}

 

하지만 람다식을 이용하면 코드를 간단하게 줄일 수 있습니다.

delegate int AddDelegate(int x, int y);

static void Main(string[] args)
{
    AddDelegate addDelegate = (x, y) => x + y;
    int result = addDelegate(3, 4);
    Console.WriteLine(result); // 출력 결과: 7
}

 

람다식을 이용하면 Add 함수를 직접 만들지 않고도 간단하게 덧셈 함수를 만들 수 있습니다. 람다식을 사용하면 코드가 간결해지므로 가독성이 높아지고 유지보수가 쉬워집니다.

반응형

댓글