본문 바로가기

C# 프로그래밍/문법 개념

[C#] 이벤트 (Event)

반응형

이벤트란 무엇일까?

이벤트는 주로 델리게이트(대리자)와 함께 쓰이는 키워드이다.

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)
    {

    }
}

 


언제 사용해야 할까?

이벤트의 사용방법은 델리게이트와 같이 사용하면 되지만 언제 사용하는지에 대해 아는것이 중요하다.

이벤트의 특징인 선언한 클래스 내에서만 사용할 수 있다는 점에서 일반 델리게이트와 구별하여 사용하는 것이 좋다.

 

델리게이트는 여러가지 콜백용도로 쓰면 알맞고 이벤트는 특정 개체의 정보를 외부에게 알려주는 용도로 사용하면 효율적으로 사용할 수 있다.

 

반응형