반응형
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 |