본문 바로가기

Game Programming/C#

Delegate란?

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