티스토리 뷰

델리게이트도 인터페이스와 마찬가지로 처음 봤을 때에는 '저거 왜 쓰지?' 싶은 요소였다.

그냥 함수를 대리해서 불러와서 사용할 수 있는 요소 정도로만 느꼈었고, 그렇게 내 기억에서도 흐려져 갔다.

 

그러다가 팀원의 '델리게이트 활용하면 이런 문제도 해결 가능하다'는 말에 한 번 검색 해 보았다.

생각보다 훨씬 활용도가 높았다. '함수 포인터 하나로 할 수 있는 게 이렇게 많아진다니...!'라는 생각 까지 들었을 정도.

그러니 오늘은 이 델리게이트의 사용 방법에 대해서 알아보자.

 

 

델리게이트 사용법

delegate val_1 Delegate(val_2 param) // 델리게이트 선언
val_1 Function_1(val_2 param) // 델리게이트로 포인팅할 함수 1
val_1 Function_2(val_2 param) // 델리게이트로 포인팅할 함수 2

val_3 Function_3(Delegate delg) // 델리게이트를 인자로 받아서 활용하는 함수 예시.
{
	val_2 value;
	delg(value); // 델리게이트 사용법.
}

void Main()
{
	Function_3(Function_1); // 델리게이트를 인자로 받는 함수 사용법 예시.
}

이외에도 델리게이트 배열을 만든다거나, 델리게이트 리스트를 만든다거나 할 수 있다.

델리게이트 자체가 클래스인지라, 클래스로 할 수 있는 작업은 거진 델리게이트로 수행이 가능하다고 봐도 무방하다.

 

주의할 점은, 델리게이트와 델리게이트로 지정할 함수는 반환형과 매개변수의 타입 및 개수가 모두 일치해야 한다는 것이다.

 

※ 추가로, 하나의 델리게이트에 여러 개의 함수를 지정할 수도 있다. 이를 델리게이트 체이닝이라고 부른다.

활용 예시

  1. 사용 아이템의 사용 함수와 스킬의 사용 함수를 델리게이트로 받아서 같은 함수로 사용한다.
  2. 델리게이트 배열을 이용, 반복문으로 작업 절차를 구현할 수도 있다.
  3. 델리게이트 체이닝을 이용, 같은 조건에 여러 함수를 '의존성 없이' 사용할 수 있다.
    [델리게이트 대상 함수는 델리게이트에 의존하나, 델리게이트 자체는 해당 함수와 의존관계가 없다.]

 

마무리하며

델리게이트에 대해서 간략하게 서술하자면 함수 포인터라고 할 수 있다.

즉, 함수 주소를 활용해서 변수 처럼 사용할 수 있는 요소로, 이를 이용해서 함수를 매개변수로 보내버리거나, 같은 코드에 함수만 바꿔치는 등의 작업이 가능하다.

때문에 이 역시도 인터페이스와 같이 다양한 부분에서 활용할 수 있는 기능이다.

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함