Notice
Recent Posts
Recent Comments
Link
| 일 | 월 | 화 | 수 | 목 | 금 | 토 |
|---|---|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 | 6 | |
| 7 | 8 | 9 | 10 | 11 | 12 | 13 |
| 14 | 15 | 16 | 17 | 18 | 19 | 20 |
| 21 | 22 | 23 | 24 | 25 | 26 | 27 |
| 28 | 29 | 30 |
Tags
- 객체지향
- Queue
- 공부
- 해쉬맵
- std::map
- c#
- list
- vector
- 차이점
- 알고리즘
- 인프런
- map
- rookiss
- thread
- std::unordered_map
- 자료구조
- MonoBehaviour
- 스택
- 스택영역
- 멀티쓰레드
- 벡터
- 리스트
- 반복문
- 트리
- 큐
- static_cast
- 배열
- 프래그멘테이션
- 기술면접
- 힙영역
Archives
- Today
- Total
호빵의 IT 개발소
[C#] Event 본문
구독자를 모집한 다음에 특정 이벤트가 발생했을때 구독자들한테 메세지를 뿌리는 패턴을 옵저버 패턴이라고 합니다.
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