반응형
이벤트란 무엇일까?
이벤트는 주로 델리게이트(대리자)와 함께 쓰이는 키워드이다.
MS 공식문서를 통해 자세히 알아보자.
핵심내용만 발췌하면 다음과 같다.
이벤트는 클래스(또는 파생 클래스) 또는 선언된 구조체(게시자 클래스) 내에서만 호출할 수 있는 특수한 종류의 멀티캐스트 대리자입니다. 다른 클래스 또는 구조체에서 이벤트를 구독하는 경우 해당 이벤트 처리기 메서드는 게시자 클래스에서 이벤트를 발생시킬 때 호출됩니다.
간단히 말해서 이벤트 키워드를 적용하면 이벤트를 선언한 클래스에서만 사용(Invoke)할 수 있다는 의미이다.
왜 event키워드를 사용하는 것일까?
event키워드를 붙여도 단순히 델리게이트를 쓰는 것보다 더 많은 기능을 할 수 있는 것은 아니다. 하지만 event키워드를 붙임으로써 다른 클래스에서 의도치 않게 이벤트를 발생시키는 것을 막을 수 있다.
다음 예제를 살펴보자.
public class TEST1001 : MonoBehaviour
{
public delegate void AlertAll();
public event AlertAll PlayerAlert = () => {};
public event AlertAll ObjectAlert = () => {};
void Start()
{
PlayerAlert.Invoke();
}
public void Aplle(AlertAll a)
{
}
}
언제 사용해야 할까?
이벤트의 사용방법은 델리게이트와 같이 사용하면 되지만 언제 사용하는지에 대해 아는것이 중요하다.
이벤트의 특징인 선언한 클래스 내에서만 사용할 수 있다는 점에서 일반 델리게이트와 구별하여 사용하는 것이 좋다.
델리게이트는 여러가지 콜백용도로 쓰면 알맞고 이벤트는 특정 개체의 정보를 외부에게 알려주는 용도로 사용하면 효율적으로 사용할 수 있다.
반응형
'C# 프로그래밍 > 문법 개념' 카테고리의 다른 글
[C#] 패턴 일치 (Pattern matching) (0) | 2022.05.26 |
---|---|
[C#] 추상화 (Abstraction) (0) | 2022.05.26 |
[C#] 반복기 메서드 (Iterator methods) (0) | 2022.05.16 |
[C#] 다형성 (Polymorphism) (0) | 2022.05.08 |
[C#] 인터페이스 (Interface) (0) | 2022.05.05 |