호빵의 IT 개발소

[C#] Event 본문

C#, 유니티/C# 기초

[C#] Event

호빵Stack 2022. 1. 9. 21:19

구독자를 모집한 다음에 특정 이벤트가 발생했을때 구독자들한테 메세지를 뿌리는 패턴을 옵저버 패턴이라고 합니다.

 

delegate를 외부에서 멋대로 호출하는 문제가 있다.

event를 사용할 경우에 구독 신청은 가능하지만 멋대로 호출하는 것은 금지시킨다.

 

InputManager.cs

class InputManager
{
    public delegate void OnInputKey();
    public event OnInputKey InputKey; 

    public void Update()
    {
    	if (Console.KeyAvailable == false)
        	return;
            
        ConsoleKeyInfo info = Console.ReadKey();
        if (info.Key == ConsoleKey.A) //A키를 입력하면
        {
        	//모두에게 알려준다.
        	InputKey(); 
        }
    }
}

 

Program.cs

class Program
{
    void OnInputTest()
    {
    	Console.WriteLine("Input Received!");
    }

    static void Main(string[] args)
    {
    	InputManager inputManager = new InputManager();
        
        inputManager.InputKey += OnInputTest; //구독신청
        
        while (true)
        {
        	inputManager.Update();
        }
    }
}

이벤트 핸들러를 추가하기 위해서 += 연산자를 사용하고 반대로 -= 연산자는 이벤트 핸들러를 삭제하기 위해 사용합니다.

 

 

 

---------------------------------------------------------------------------------------------------------------------------

참고 : [인프런] Rookiss님의 [C#과 유니티로 만드는 MMORPG 게임 개발 시리즈] Part1: C# 기초 프로그래밍 입문

'C#, 유니티 > C# 기초' 카테고리의 다른 글

[C#] Lambda  (0) 2022.01.09
[C#] Delegate (대리자)  (0) 2022.01.09
[C#] Property  (0) 2022.01.09
[C#] Interface  (0) 2022.01.09
[C#] Generic(일반화), object  (0) 2022.01.09
Comments