■ 대리자(Delegate), 이벤트(Event) 차이점
- 대리자(Delegate)는 public 혹은 internal인 경우 클래스 외부에서 호출이 가능
- 이벤트(Event)는 public이라도 클래스 외부에서 호출 불가
- 대리자(Delegate)는 콜백 역할
- 이벤트(Event)는 상태 변화 혹은 사건의 알림 역할
■ Example
using System;
namespace EventExample
{
public delegate void EventHandler(string msg);
class TestEvent
{
public event EventHandler SomethingHappend;
public void Run(int num)
{
if(num%2 == 0)
SomethingHappend?.Invoke(string.Format($"짝수 이벤트 발생!! num = {num}"));
}
}
class Program
{
static void Main(string[] args)
{
TestEvent testEvent = new TestEvent();
testEvent.SomethingHappend += new EventHandler(TestEvent_SomethingHappend);
for(int i = 1; i <= 10; i++)
{
testEvent.Run(i);
}
}
private static void TestEvent_SomethingHappend(string msg)
{
Console.WriteLine($"[TestEvent_SomethingHappend] {msg}");
}
}
}
'개인공부 > C#' 카테고리의 다른 글
[C#] Func, Action 대리자 (0) | 2023.02.17 |
---|---|
[C#] 람다식(Lambda Expression) (0) | 2023.02.17 |
[C#] 이벤트(Event) (0) | 2023.02.14 |
[C#] 대리자(Delegate) (0) | 2022.10.13 |
[C#] 예외(Exception) (0) | 2022.10.07 |