이벤트(event)와 델리게이트(delegate)를 함께 알아보겠습니다.
델리게이트 선언
public deleagte void SomeEventHandler(int time);
선언한 델리게이트 인스턴스 선언
public event SomeEventHandler EventHappened;
public void CheckTime(bool isAM, int time)
{
if (isAM)
{
EventHappened(time);
}
}
이벤트 핸들러 만들기.(델리게이트 선언한 매개변수 타입, 개수가 일치하는 메소드로 만들기)
public static void TimeHanlder(int time)
{
Console.WriteLine("오전 {0}시 입니다.", time);
}
이벤트 객체에 핸들러를 등록한다.
static void Main(string[] args)
{
EventHappened += new SomeEventHandler(TimeHanlder);
for(int time = 7; time < 14; time++)
{
if (time < 12) CheckTime(true, time);
else CheckTime(false, time);
}
}
이벤트 발생시 Output
오전 7시 입니다.
오전 8시 입니다.
오전 9시 입니다.
오전 10시 입니다.
오전 11시 입니다.
전체 소스
public deleagte void SomeEventHandler(int time); // 델리게이트 선언
public event SomeEventHandler EventHappened; // 델리게이트 인스턴스를 이벤트한정자로 선언
// 오전만 시간을 알려주는 기능이 있는 메서드
public void CheckTime(bool isAM, int time)
{
if (isAM)
{
EventHappened(time); // 인스턴스에 선언부 매개변수랑 같은 타입의 변수를 넣는다.
}
}
static void Main(string[] args)
{
// 델리게이트 인스턴스에 작성한 이벤트 핸들러를 등록한다.
EventHappened += new SomeEventHandler(TimeHanlder);
for(int time = 7; time < 14; time++)
{
if (time < 12) CheckTime(true, time);
else CheckTime(false, time);
}
}
// 이벤트핸들러. 선안한 델리게이트와 매개변수 개수, 타입 일치해야함.
public static void TimeHanlder(int time)
{
Console.WriteLine("오전 {0}시 입니다.", time);
}
'프로그래밍 > c#' 카테고리의 다른 글
[c#] 쓰레드 동기화 클래스 1(Lock, Monitor) (0) | 2019.10.08 |
---|---|
[c#] Thread Safe (쓰레드 동기화) (0) | 2019.10.08 |
[Tip] 프로그램 소스코드를 공개하는 사이트 모음집 (0) | 2019.10.02 |
[c#] 암호화 알고리즘 종류 및 설명 (0) | 2019.10.02 |
[c#] Bitmap.Clone() vs new Bitmap (0) | 2018.09.04 |
댓글