델리게이트 (Delegate)
델리게이트는 특정 메서드 시그니처와 일치하는 메서드를 참조할 수 있는 형식이다. 이를 통해 메서드를 변수처럼 다루고, 런타임에 메서드를 동적으로 호출할 수 있다.
이벤트 (Event)
이벤트는 델리게이트의 특수한 형태로, 주로 특정 동작이 발생했을 때 여러 구독자(subscribers)에게 알리는 데 사용된다. 이벤트는 델리게이트보다 더 제한적이며, 이벤트를 발생시키는 클래스 외부에서는 이벤트를 직접 호출할 수 없다.
사용 목적:
- 델리게이트: 특정 메서드의 참조를 저장하고 런타임에 호출하는 데 사용된다. 함수 포인터와 유사한 역할이다.
- 이벤트: 주로 상태 변화나 특정 동작이 발생했을 때 여러 구독자에게 알리는 데 사용된다. 이벤트는 더 제한적이며 외부에서 직접 호출할 수 없다.
접근 제한:
- 델리게이트: 델리게이트를 참조하는 모든 코드에서 호출할 수 있다.
- 이벤트: 이벤트를 소유한 클래스 외부에서는 이벤트를 직접 호출할 수 없고, 구독 및 구독 해지만 가능하다.
![]() |
![]() |
델리게이트와 이벤트는 비슷한 개념이지만 서로 다른 목적과 사용 사례를 가지고 있다.
델리게이트는 메서드 참조를 저장하고 호출하는 데 사용되며, 이벤트는 주로 상태 변화나 특정 동작이 발생했을 때 알리는 데 사용된다.
이벤트는 델리게이트보다 더 제한적이며, 이벤트를 발생시키는 클래스 외부에서는 이벤트를 직접 호출할 수 없다.
이를 통해 코드의 안전성을 높이고, 이벤트 구독자가 예상치 못한 방식으로 이벤트를 트리거하는 것을 방지할 수 있다.
C#에서 Action과 Func 델리게이트는 표준 델리게이트 타입으로, 코드에서 델리게이트를 정의할 때의 반복적인 작업을 줄이는 데 유용하다.
Action 델리게이트는 반환값이 없는 메서드를 참조하는데 사용되며 Func 델리게이트는 반환값이 있는 메서드를 참조하는데 사용된다.
이 두 타입은 특히 람다 식과 결합하여 간결하고 읽기 쉬운 코드를 작성하는 데 도움을 준다.
![]() |
![]() |
반환값이 있는 Func와 매개변수와 반환값이 있는 Func이다.
Action과 Func를 혼합하여 데이터를 처리하고 결과를 출력하는 프로그램을 작성해보았다.
Action과 Func는 앞서 말했듯이 C#에서 간결하고 유연한 코드를 작성하는데 유용하다. 이들을 사용하면 코드의 가독성과 유지보수성을 높일 수 있으며 다양한 시나리오에서 효과적으로 활용할 수 있다.
이러한 델리게이트를 사용하여 이벤트 처리, 비동기 작업, 함수형 프로그래밍 등 다양한 프로그래밍 패턴을 구현할 수 있다.
'개인 공부 > C#' 카테고리의 다른 글
연결 리스트 (Linked List) (1) | 2024.07.26 |
---|---|
스택, 큐 (1) | 2024.07.26 |
추상 클래스 (0) | 2024.07.26 |
튜플 (0) | 2024.07.25 |
유니티 리플렉션 (Reflection) (0) | 2024.07.19 |