🙇‍♀️Event

🪐Event

  • delegate를 한번더 맵핑한 것
  • 구독신청을 해야 사용가능
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)
        {
            InputKey();
        }
    }
}
  • OnInputKey이름의 delegate
  • OnInputKey를 맵핑한 InputKey
  • Update에서 a를 누르면 InputKey이벤트 발송
public static void OnInputTest()
{
    Console.WriteLine("Input Received!");
}

static void Main(string[] args)
{
    InputManager inputManger = new InputManager();
    inputManger.InputKey += OnInputTest;

    while (true)
    {
        inputManger.Update();
    }
}
  • InputKey에 OnInputTest가 구독을 신청함
    • inputManger.InputKey += OnInputTest; - 구독신청
    • inputManager.Update가 실행 될 때마다 InputKey이벤트 발송
    • 구독신청한 OnInputTest가

🪐전체코드

namespace CSharp
{
    class Program
    {
        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)
                {
                    InputKey();
                }
            }
        }

        public static void OnInputTest()
        {
            Console.WriteLine("Input Received!");
        }

        static void Main(string[] args)
        {
            InputManager inputManger = new InputManager();
            inputManger.InputKey += OnInputTest;

            while (true)
            {
                inputManger.Update();
            }
        }
    }
}

태그:

카테고리:

업데이트: