C#

1.24 영상 강의(26~30) 내용 정리(1)

용성 2022. 1. 24. 10:46

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