[내일배움캠프] 델리게이트(Delegate)와 이벤트(Event)

이민호·2025년 5월 21일
0

델리게이트와 이벤트

델리게이트를 배운 강의를 봤을 때 새로운 코드를 보게 되었다.

public event Action onTakeDamage;

코드를 처음 봤을 때 Action 타입의 델리게이트를 선언한 것까지는 알았는데 앞에 붙은 event가 무었인지 궁금했다.

event

이벤트는 클래스에서 어떠한 상황이 발생했을 때 알림을 받기 위해 사용되는 매커니즘이다.

크게 이벤트 발생자와 이벤트 구독자로 나뉜다. 이벤트 발생자는 이벤트를 발생시키는 클래스이며 이벤트를 정의를 해야한다. 이벤트 구독자는 이벤트 발생에 대한 메서드를 담당하는 클래스이다.

이벤트는 접근제한자의 역할도 할 수 있는 데, 이벤트 구독자들은 이벤트에 대한 구독구독 취소만 가능하며 이벤트 호출 및 할당은 불가하며 이는 이벤트를 정의한 클래스 내부에서만 가능하다.

이벤트 발생자 내부
public event Action onTakeDamage; => 이벤트 정의

onTakeDamage.Invoke(); => 이벤트 핸들러 호출

이벤트 구독자 클래스 내부

// 이벤트 구독
player.onTakeDamage += Damaged;
// 이벤트 구독 취소
player.onTakeDamage -= Damaged;

onTakeDamage.Invoke(); => 컴파일 오류
player.onTakeDamage = Damaged; => 컴파일 오류
// 이벤트를 정의한 이벤트 발생자에서만 가능
profile
게임 개발을 꿈꾸는 남자

0개의 댓글