C Sharp Rookiss Part1 기초 프로그래밍 입문 : Event
🙇♀️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();
}
}
}
}