반응형

Delegate : 델리게이트란 '대리인' 이란 뜻으로 누군가를 대신해서 일해주는 것을 전문으로 하는 것을 의미한다.

 

int num = 1;

String str = "test";

Int 형은 숫자, String은 문자열 타입을 담을 수 있듯이 메소드를 변수에 담고 사용한다고 생각하면 좀 더 쉽게 이해할 수 있을 것이다.

 

Delegate 선언 및 방식

-> delegate [ 참조할 함수의 반환 Type ] [ 델리게이트 명 ] (매개 변수 목록)

Ex) delegate int MyAddDelegate(int a, int b)

// 참조할 메소드

Public int AddDelegate(int a, int b)

{

      return a+b;

}

 

Delegate CallBack

- 여기서 Callback 이란 'A'라는 메소드를 호출했을 때 'A'에서 'B'메소드를 호출하는 것을 의미한다.

// 아래 그림 참조 > AddDelegate(), MinusDelegate(), MultiplyDelegate()를 대신 호출하는 것을 말한다.

namespace ConsoleApp2
{
    delegate int MyDelegate(int a, int b);

    class Program
    {
        static int num1 = 10;
        static int num2 = 5;

        static void Main(string[] args)
        {
            MyDelegate addDelegate = new MyDelegate(AddDelegate);
            MyDelegate minusDelegate = new MyDelegate(MinusDelegate);
            MyDelegate multiplyDelegate = new MyDelegate(MultiplyDelegate);

            Calcurator(num1, num2, addDelegate);
            Calcurator(num1, num2, minusDelegate);
            Calcurator(num1, num2, multiplyDelegate);
        }

        public static int AddDelegate(int a, int b)
        {
            return a + b;
        }

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

        public static int MultiplyDelegate(int a, int b)
        {
            return a * b;
        }

        public static void Calcurator(int a, int b, MyDelegate calcurate)
        {
            Console.WriteLine(calcurate(a, b));
        }
    }
}

<결과 출력>

 

반응형

'프로그래밍 > C#' 카테고리의 다른 글

DataTable에 대한 LINQ 쿼리  (0) 2022.08.23
DateTime 형식 ToString()으로 변환 시 문자열 처리  (0) 2020.12.18

+ Recent posts