티스토리 뷰
델리게이트도 인터페이스와 마찬가지로 처음 봤을 때에는 '저거 왜 쓰지?' 싶은 요소였다.
그냥 함수를 대리해서 불러와서 사용할 수 있는 요소 정도로만 느꼈었고, 그렇게 내 기억에서도 흐려져 갔다.
그러다가 팀원의 '델리게이트 활용하면 이런 문제도 해결 가능하다'는 말에 한 번 검색 해 보았다.
생각보다 훨씬 활용도가 높았다. '함수 포인터 하나로 할 수 있는 게 이렇게 많아진다니...!'라는 생각 까지 들었을 정도.
그러니 오늘은 이 델리게이트의 사용 방법에 대해서 알아보자.
델리게이트 사용법
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); // 델리게이트를 인자로 받는 함수 사용법 예시.
}
이외에도 델리게이트 배열을 만든다거나, 델리게이트 리스트를 만든다거나 할 수 있다.
델리게이트 자체가 클래스인지라, 클래스로 할 수 있는 작업은 거진 델리게이트로 수행이 가능하다고 봐도 무방하다.
주의할 점은, 델리게이트와 델리게이트로 지정할 함수는 반환형과 매개변수의 타입 및 개수가 모두 일치해야 한다는 것이다.
※ 추가로, 하나의 델리게이트에 여러 개의 함수를 지정할 수도 있다. 이를 델리게이트 체이닝이라고 부른다.
활용 예시
- 사용 아이템의 사용 함수와 스킬의 사용 함수를 델리게이트로 받아서 같은 함수로 사용한다.
- 델리게이트 배열을 이용, 반복문으로 작업 절차를 구현할 수도 있다.
- 델리게이트 체이닝을 이용, 같은 조건에 여러 함수를 '의존성 없이' 사용할 수 있다.
[델리게이트 대상 함수는 델리게이트에 의존하나, 델리게이트 자체는 해당 함수와 의존관계가 없다.]
마무리하며
델리게이트에 대해서 간략하게 서술하자면 함수 포인터라고 할 수 있다.
즉, 함수 주소를 활용해서 변수 처럼 사용할 수 있는 요소로, 이를 이용해서 함수를 매개변수로 보내버리거나, 같은 코드에 함수만 바꿔치는 등의 작업이 가능하다.
때문에 이 역시도 인터페이스와 같이 다양한 부분에서 활용할 수 있는 기능이다.
'스파르타 내일배움캠프 > Today I Learned' 카테고리의 다른 글
Today I Learned - Day 13 [콘솔창 UI 작업에 관하여 - 2] (1) | 2024.09.30 |
---|---|
Today I Learned - Day 12 [제너릭] (0) | 2024.09.27 |
Today I Learned - Day 10 [Json파일 입출력] (0) | 2024.09.25 |
Today I Learned - Day 9 [콘솔창 UI 작업에 관하여] (1) | 2024.09.24 |
Today I Learned - Day 8 [인터페이스의 활용법] (0) | 2024.09.23 |