■ 이벤트(Event) :
- 클래스(Class) 내부에서 어떤 일(Event)이 생겼을 때 외부에 알리는 기능
- 이벤트의 가입자(subscriber)에게만 알림
- event 키워드로 선언
- 이벤트 추가 : += 연산자
- 이벤트 제거 : -= 연산자
- EventHanlder 사용 방법 (전달할 값이 없는 형태)
■ Example
using System;
namespace EventExample
{
class TestEvent
{
public event EventHandler SomethingHappend;
public void Run()
{
SomethingHappend += DoSomethingEvent;
SomethingHappend += DoSomethingEvent02;
SomethingHappend?.Invoke(this, null);
}
private void DoSomethingEvent(object sender, EventArgs e)
{
Console.WriteLine($"[DoSomethingEvent] 이벤트 발생!!");
}
private void DoSomethingEvent02(object sender, EventArgs e)
{
Console.WriteLine($"[DoSomethingEvent02] 이벤트 발생!!");
}
}
class Program
{
static void Main(string[] args)
{
TestEvent testEvent = new TestEvent();
testEvent.Run();
}
}
}
- EventHanlder 사용 방법 (전달할 값이 있는 형태)
■ Example
using System;
namespace EventExample
{
class User
{
public string Name { get; set; }
public int Age { get; set; }
}
class TestEvent
{
private event EventHandler<User> SomethingHappend;
public void Run()
{
SomethingHappend += DoSomethingEvent;
SomethingHappend?.Invoke(this, new User() { Name = "홍길동", Age = 20 });
}
private void DoSomethingEvent(object sender, User e)
{
Console.WriteLine($"[DoSomethingEvent] 이벤트 발생!!, Name = {e.Name}, Age = {e.Age}");
}
}
class Program
{
static void Main(string[] args)
{
TestEvent testEvent = new TestEvent();
testEvent.Run();
}
}
}
'개인공부 > C#' 카테고리의 다른 글
[C#] 람다식(Lambda Expression) (0) | 2023.02.17 |
---|---|
[C#] 대리자(Delegate), 이벤트(Event) 차이점 (0) | 2023.02.15 |
[C#] 대리자(Delegate) (0) | 2022.10.13 |
[C#] 예외(Exception) (0) | 2022.10.07 |
[C#] 일반화(Generalization) (0) | 2022.09.26 |