티스토리 뷰

이번에는 델리게이트의 심화편, event에 대한 글이다.

사실, 델리게이트 중에서 가장 많이 쓰이는 형태이다 보니, 어느 의미 기본에 해당하는 영역이기도 하다.

그러니까 개념 위주로 간단하게 설명 해 보자.

 


event란?

event는 델리게이트의 일종으로, 특정한 상황에 대한 반응을 만들어내는 용도로 사용된다.

event로 선언된 델리게이트는 event가 선언된 그 클래스 내부에서만 사용 가능하다.

 

이러한 구성을 이용해서 '특정 객체의 현상에 대한 반응'을 구성할 때 자주 쓰이는 기능.

이제 이걸 선언하는 방식을 정리 해 보자.

public event Action<T1, T2, ...> OnActionEvent
public event Func<T1, T2, ..., Treturn> OnFuncEvent

Action은 반환값이 없는 경우에 사용하고, Func는 반환값(Treturn)이 있을 때 사용한다.

[참고로, Func의 반환값은 여러 개의 함수를 거치는 경우, '가장 마지막 값'을 반환한다.]


구독

이제 이 event에 함수를 할당하면 event가 콜 될 때 해당 함수가 실행된다.

추가하고자 하는 경우에는 그냥 += 연산자로 추가하면 되고, 구독을 해제하자면 -=으로 빼 주면 된다.

집합에 무언가를 추가하거나 뺀다는 느낌이라고 생각하면 이해하기 편할 것이다.

 

이렇게 구독된 함수들은 해당 event가 Call 되면 모두 일제히 작동한다.

event를 콜하면 등록된 함수가 발동되는 방식이며, 구독은 구독할 함수를 지닐 클래스에서 진행하는 것이 일반적인데, 그 덕분에 이 event를 활용하는 경우에는 클래스 의존도 문제에서 제법 자유로운 편이다.

 

참고로, 구독된 모든 함수를 제거하려면 그냥 = null으로 비워주면 된다.


오늘은 event에 관해서 간략하게 서술 해 보았다.

C#으로 개발을 하다 보면 매우 자주 쓰게 될 요소이니, 잘 알아두는 것이 좋을 것이다.

[사실, 마지막의 =null가 기억 안나는 경우가 은근히 있어서, 이걸 적으려고 했다가 보니까 event를 정리한 적이 없길래 적은 글이다.]

공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/04   »
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
글 보관함