event내부 구조 및 예제
public event EventHandler Event; <- 우리가 쓰는 이벤트 선언
컴파일러 내부에서 돌아가는 이벤트 구조.
-------------------------------------------------------------------------------------
private EventHandler _Event;
public event EventHandler Event
{
add
{
lock(this) {_Event +=value;}
}
remove
{
lock(this) {_Event -=value;}
}
}
-------------------------------------------------------------------------------------
class ExEvent
{
private string name;
public ExEvent(string name) { this.name = name; }
public string NAME { get { return name; } }
public delegate void OnEvent(object sender, EventArgs arg);
public event OnEvent onEvent;
public void RunEvent()
{
if (onEvent != null)
onEvent(this, new EventArgs());
}
}
class Program
{
static void OnEvent(object sender, EventArgs arg)
{
ExEvent evt = (ExEvent)sender;
Console.WriteLine("{0} 이벤트 발생!", evt.NAME);
}
static void Main(string[] args)
{
ExEvent event1 = new ExEvent("홀수");
ExEvent event2 = new ExEvent("짝수");
event1.onEvent += OnEvent;
event2.onEvent += OnEvent;
Console.WriteLine("정수를 입력하세요.");
int num = int.Parse(Console.ReadLine());
if (num % 2 == 1)
event1.RunEvent();
else
event2.RunEvent();
}//main
}//class