[C#] 델리게이트 (delegate)


델리게이트란?

델리게이트는 메소드에 대한 참조이다.

델리게이트에 메소드의 주소를 할당한 후

델리게이트를 호출하면 이 델리게이트가

메소드를 호출해준다.




언제 사용하는가?

프로그래밍을 하다 보면 '값'이 아닌 '코드'를 매개 변수로 넘기고

싶을 때가 있다. 배열을 정렬하는 메소드를 예로 들자면,

이 메소드가 오름차순으로 정렬할 것인지, 내림차순으로

정렬할 것인지, 아니면 특별한 계산식에 의해 정렬할 것인지

이 메소드가 정렬을 수행할 때 사용하는 비교 루틴을

매개 변수로 넣을 수 있다면 아주 유연한 프로그램이 될 것이다.

이에 대한 예시는 밑에서 다시 다루도록 하겠다.




C++ STL의 알고리즘에 함수 포인터를

이용한 콜백 메커니즘이 사용되는데

델리게이트 또한 이 함수포인터와

유사하다고 생각하면 될 듯하다.




한정자 delegate  반환형식 델리게이트 이름 ( 매개변수 목록 );

ex) delegate int MyDelegate ( int a , int b);


--> 참조할 메소드의 반환 형식과 매개 변수를 명히해줘야 한다.

--> 델리게이트는 인스턴스가 아닌 형식이다.

--> 따라서 MyDelegate의 인스턴스를 따로 만들어야 한다.




ex)

int Plus (int a, int b){ ... }

MyDelegate CallBack;

CallBack = new MyDelegate(Plus);

--> new 연산자를 사용하여 인스턴스를 만든다.




ex)




결과




오늘은 C#의 델리게이트(delegate)에 대해 알아보았다.

그냥 함수 포인터인 것 같다. (아직까지는..)

다음 시간에는 일반화된 델리게이트에 대해 알아보겠다.




+ Recent posts