Delegate(대리자)
public delegate [반환형식] [이름] (매개변수)
- method 와 동일한 Type의 delegate를 선언
- 선언한 delegate 변수를 생성
- 생성한 delegate 에 사용할 method를 참조
Example
namespace ConsoleApplication {
delegate int FuncDelegate(int a, int b);
class Program {
static int Plus(int a, int b) {
return a + b; }
static int Minus(int a, int b) {
return a - b; }
static void Main(string[] args) {
FuncDelegate plusDelegate = Plus;
FuncDelegate minusDelegate = Minus;
Console.WriteLine(plusDelegate(5, 10));
Console.WriteLine(minusDelegate(20, 10));
} } }
Delegate 주의 사항
- delegate는 Class 밖에 선언한다.
- delegate 타입과 실행메서드 타입은 동일 해야 한다.
- 이벤트는 값을 전달하는 쪽에서 선언해야 한다.
Delegate를 언제 사용하는가?
1. 메인 폼(MainForm)에서 자식폼으로 값을 전달해야 할 경우
2. 자식폼에서 메인폼으로 값을 전달해야 할 경우
Delegate CallBack
- method 의 인자로 delegate를 사용하여 다른 함수에서 delegate를 호출
Delegate chain
- +=, -= 로 함수를 연결하거나 해제해서 순서대로 호출 할 수 있다.
static void Main(string[] args) {
FuncDelegate plusDelegate = null;
plusDelegate += Func1;
plusDelegate += Func2;
plusDelegate += Func3;
plusDelegate += Func4;
plusDelegate("Text");
}
Dlegate event
Observer Design Pattern
- 구독자(Subscriber)가 공급자(Provider)를 등록하고 공급자(Provider)로부터 알림을 수신하는 데 사용
class Counter {
public event EventHandler ThresholdReached;
protected virtual void OnThresholdReached(EventArgs e) {
EventHandler handler = ThresholdReached;
handler?.Invoke(this, e);
}
- 이벤트를 발생 시키기 위해 protected, virtual 메서드 선언
728x90
'C#' 카테고리의 다른 글
1.25 영상 강의(31~35) 내용 정리 (0) | 2022.01.25 |
---|---|
1.24 영상 강의(26~30) 내용 정리(2) (0) | 2022.01.24 |
1.23 영상 강의(21~25) 내용 정리 (0) | 2022.01.23 |
C# 코딩 규칙 (0) | 2022.01.22 |
C# Task (0) | 2022.01.22 |