웹 개발 메모장

[C#] delegate 대리자 란? 본문

옛날../C#

[C#] delegate 대리자 란?

도로롱주 2017. 10. 12. 16:38



delegate  (권한・업무 등을) 위임하다



1
int num;
cs

num에는 int형 정수를 저장할 수 있습니다.


2
string str;
cs

str에는 문자열을 저장할 수 있습니다.


3
DateTime dt;
cs

dt에는 DateTime 체를 저장할 수 있습니다.


4
delegate int Calc(int x, int y);
cs

Calc 에는 int 2개를 인자로 받고 int를 반환하는 메서드를 저장할 수 있습니다.

(정확한 표현은 아니고 와닿기 쉽게 쓴 것 입니다.)



delegate를  간단한 예제입니다.


다음과 같은 메소드 2개가 있습니다.

1
2
3
4
5
6
7
8
9
int plus(int x, int y)
{
    return x + y;
}
 
int minus(int x, int y)
{
    return x - y;
}
cs



Step 1-1. 선언하기

1
delegate int Calc(int x, int y);
cs


Step 1-2. 생성하기

1
Calc calc = new Calc(plus);
cs

또는

1
Calc calc = new Calc(minus);
cs


Step 1-3. 호출하기

1
int result = calc(21)
cs



Step 1 이  기초 사용법이고 Step 2 는 메소드에 delegate를 인자로 넘기는 예제입니다.



Step 2-1. delegate를 매개변수로 활용하는 메소드 myCalc 정의

1
2
3
4
int myCalc(int x, int y, Calc calc)
{
    return calc(x,y);
}
cs



Step 2-2. myCalc 호출

1
int result = myCalc(2,1,plus);
cs

또는

1
int result = myCalc(2,1,minus);
cs



Step 1과 2 모두 result에 3 또는 1이 저장됩니다.



'옛날.. > C#' 카테고리의 다른 글

[C#] C# 코드에서 @ 골뱅이 란?  (0) 2017.10.20
[C#] 예외처리 란?  (0) 2017.10.20
[C#] 이니셜라이저 란?  (0) 2017.10.13
[C#] Func 와 Action 대리자(delegate) 란?  (0) 2017.10.13
[C#] 람다 식 이란?  (0) 2017.10.13
Comments