이번 포스트에서는 C#에서 제공하는 기능 중 하나인 델리게이트에 대해 알아보겠습니다.
델리게이트는 delegate로 작성하며 대리자라는 의미를 가지고 있습니다.
델리게이트는 C++에서의 함수자나 함수 객체와 비슷한 역할을 수행합니다.
하지만, 함수자나 함수 객체와 다르게 훨씬 더 사용이 간편하고 구현이 쉽다는 장점이 있습니다.
이러한 장점으로 인해 C++ 기반인 언리얼 엔진에서도 자체적으로 델리게이트를 구현하여 사용합니다.
그렇다면 예제로 자세하게 알아보기 이전에 델리게이트를 조금 더 알아보겠습니다.
1) 델리게이트란?
델리게이트를 한 줄로 표현하면 다음과 같습니다.
함수 자체를 인자로 넘겨 로직의 안에서 함수를 호출(=콜백)하는 구조
델리게이트를 사용하기 이전에 델리게이트에 대해 선언해야 합니다.
선언할 때의 구조는 다음과 같습니다.
delegate 반환타입 델리게이트이름();
위와 같이 선언된 델리게이트에 호출할 함수를 연결(또는 구독)함으로써 델리게이트는 동작하게 됩니다.
그리고 위와 같이 동작하는 패턴을 구독-발행 패턴이라고 합니다.
그렇다면 자세한 예제를 통해 델리게이트에 대해 알아보겠습니다.
2) 예제
main 함수 외의 부분은 위와 같이 구성되어 있습니다.
OnEvent 델리게이트에 함수를 등록하여 등록한 함수를 ShowEvent에서 호출하게끔 설계하였습니다.
main 함수는 위와 같이 구성하였습니다.
총 2개의 함수를 델리게이트에 구독하였습니다.
실행결과는 다음과 같습니다.
의도했던 대로 등록한 2개의 함수를 문제없이 실행한 것을 확인할 수 있습니다.
델리게이트를 사용하면 함수를 설계자가 원하는 시점에서 호출할 수 있고
이는 유동적인 설계의 흐름을 만들어낼 수 있습니다.
그러나 아직 남아있는 문제가 있는데 이는 다음의 포스트에서 한번 알아보겠습니다.
'C#' 카테고리의 다른 글
람다식 (0) | 2024.09.28 |
---|---|
이벤트 키워드 (0) | 2024.09.14 |
attribute와 reflection (0) | 2024.09.07 |
C#의 예외처리 (0) | 2024.09.07 |
Nullable 키워드 (0) | 2024.08.31 |