Delegate : 중간 전달자라고 생각하자
집판매자 <- 부동산중개인 <- 나
└─────────────^
내가 집을 구매하려고 할 시에 곳곳을 돌아 다니면서 찾는 것보다 부동산 중개인을 통해서 "나는 집을 구하고 있습니다."라는 내용을 부동산 중개인에게 연락을 하면 부동산 중개인은 해당하는 내용을 검토 후 "오늘 집보러 오는 사람있습니다"라고 말하고 집판매자에게 나의 연락처를 준후 집판매자는 "오늘 xx시까지 와주세요"라고 연락을 통보해준다.
C#에선 델리게이트는 이런 콜백을 위해서 구현된다.
사용법 : (한정자) Delegate (반환형식) 델리게이트이름 ( 매개변수_목록)
예) delegate int TestDelegate(int a, int b) : 델리게이트는 인스턴스가 아닌 형식
1. 델리게이트를 선언
2. 델리게이트 인스턴스를 생성, 인스턴스를 생성시에는 델리게이트가 참조할 메소드를 매개 변수로 넘긴다.
3. 델리게이트를 호출한다.
delegate int TestDelegate(int a, int b); --- 1. 델리게이트를 선언
class Cal
{
public int Plus(int a, int b) --- 2. 델리게이트는 인스턴스&정적 메소드를 참조할수 있다.
{ ...... }
}
class Program
{
staitc void main(strign[] args)
{
Cal c = new Cal()
TestDelegate Callback;
Callback = new MyDelegate(cal.Plus);
Console.WriteLine(Callback(3,4)); -- 3. 델리게이트를 호출한다.
}
}
결국 Delegate는 외부에 참조 할 메소드를 외부에 노출시키고자? 한것?
'Game Programming > C#' 카테고리의 다른 글
| partial type이란? (0) | 2015.12.08 |
|---|---|
| C# Convert 관련(string to Enum) (0) | 2015.10.01 |
| C/C++ 코드를 C#으로 (0) | 2015.09.23 |
| MySql or MariaDB 사용 관련... (0) | 2014.08.05 |
| json과Http 사용하여 Nexmo를 통한 SMS보내기 (0) | 2014.07.09 |