#event
Programming/Old 2016. 4. 11. 10:19이벤트는 사건을 다룬다.
그 사건이란 UI 상에 문자를 출력하는 것일수도 있고, 산술 연산이거나 네트워크와 관련된 작업이 될 수 있다.
이벤트를 설명할 때 키보드나 마우스를 눌렀을 때 발생하는 사건에 빗댄 설명은 너무 부족한 설명이다.
C#의 예에서 event 키워드를 이용한다면 사건의 추가(oper : +=)와 삭제(oper : -=)가 가능하다.
event 키워드 선언을 위해서는 delegate 타입이 필요하다.
delegate를 이용한다면 사건을 함수로 클로저 하므로 사건의 관리가 용이해진다.
아래는 EXYNOA라는 분의 블로그의 'C# 강좌 19편. 델리게이트와 이벤트(Delegates and Events)'라는 글의 소스코드에서 이벤트를 추가하는 소스코드를 추가하였다.
namespace ConsoleApplication7
{
public delegate void MyEventHandler(string message);
public delegate void MyEventHandler2(string message);
class Publisher
{
public event MyEventHandler Active;
public event MyEventHandler2 Active2;
public void DoActive(int number)
{
if (number % 10 == 0)
Active("Active!" + number);
else
Console.WriteLine(number);
}
public void DoActive2(int number)
{
if (number % 10 == 0)
Active2("Active!" + number);
else
Console.WriteLine(number);
}
}
class Subscriber
{
static public void MyHandler(string message)
{
Console.WriteLine("!!!!!!"+message);
}
static public void MyHandler2(string message)
{
Console.WriteLine("@@@@@@@@@@@"+message);
}
static void Main(string[] args)
{
Publisher publisher = new Publisher();
publisher.Active += new MyEventHandler(MyHandler);
publisher.Active2 += new MyEventHandler2(MyHandler2);
//for (int i = 1; i < 50; i++)
publisher.DoActive(30);
publisher.DoActive2(30);
}
}
'Programming > Old' 카테고리의 다른 글
001. 네이티브 플랫폼 별 쿠키 삭제 구현 방법 (0) | 2016.05.05 |
---|---|
001. 네이버 로그인 API 사용 방법과 관련 지식 (2) | 2016.05.03 |
# The differences between Observer/Observable and Publisher/Subscriber Patterns (0) | 2016.04.11 |
#[Xamarin] settings . (0) | 2016.04.11 |
Separation of Concerns [ 관심사 분리 ] (0) | 2016.04.09 |