본문 바로가기

Delegate5

[C#][Study][기초다지기] Action, Func, Predicate 1. 사용 목적 - 딜리게이트 선언의 불편함을 보완 ex) delegate 사용 delegate void DelegateFunction(); // 이렇게 매번 선언을 해줘야 하는 불편함이 있음 static void Main(string[] args) { DelegateFunction df = () => Console.WriteLine("실행"); // 아래 두가지 방법 중 하나로 실행 가능 df(); // 실행 방법 1 df.Invoke(); // 실행 방법 2 } ex) Action 사용 static void Main(string[] args) { Action ac = () => Console.WriteLine("실행"); ac(); ac.Invoke(); } - 이처럼 간결하게 나타낼 수 있다. 2... 2023. 9. 25.
[C#][Study][기초다지기] 내장 delegate 내장 delegate - Microsoft에서 제공하는 2종류의 내장 delegate가 있다. - 내장 delegate를 이용해 이벤트 처리 코드를 쉽게 작성할 수 있다. - 이벤트를 발생시킬때 규칙에 따라 필수 매개변수들을 delegate로 전달해야함 public delegate void EventHandler(object sender, EventArgs e); public delegate void EventHandler(object sender, TEventArgs e); 1) 예시 1 - 리턴값이 없는 이벤트 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threadin.. 2023. 9. 23.
[C#][Study][기초다지기] 딜리게이트 event 함수 Event 함수 - event 함수 호출시 연결된 delegate를 이용해 Event Handler(이벤트 처리 함수)를 호출하는 기능 - event 키워드를 사용하여 생성 - Event Handler는 리턴형이 없어 항상 void로 반환함 - 모든 이벤트는 delegate를 기반으로 함 - 이벤트는 객체가 있어야 함 - 이벤트 처리 함수는 이름 앞에 보통 "On"으로 시작하게 함 [이벤트 동작 순서] 1) delegate 정의 2) delegate와 동일한 이름으로 이벤트를 정의 3) 이벤트 발생시 처리될 이벤트 처리 함수(Event Handler)를 정의 4) delegate를 위한 함수가 있어야 함 using System; using System.Collections.Generic; using Sy.. 2023. 9. 23.
[C#][Study][기초다지기] 딜리게이트 Multicast Delegate Multicast Delegate - delegate에 여러 함수를 연결해서 사용가능 - 여러 함수가 연결된 delegate 호출시 FIFO(First In First Out) 순으로 호출 - '+' 또는 '+=' 가 delegate에 함수를 추가할 때 사용 - '-' 또는 '-=' 은 delegate에서 함수를 제거할 때 사용 using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Multicast_Delegates { class TestDeleGate { // 선언 public delegate void ShowMessage(strin.. 2023. 9. 23.
[C#][Study][기초다지기] 딜리게이트 Delegate Delegate - 메서드의 주소를 저장하고, 호출할 수 있음 - 내용을 가지지 않음 - 메서드를 캡슐화하기 때문에 안전하고, 객체지향적임 - 함수 포인터 - delegate와 delegate에 추가할 함수는 같은 리턴값을 가져야 함 [3가지 유형] 1) 매개변수가 없고, 리턴타입이 없는 유형 public delegate void TestDelegate(); 2) 매개변수를 가지고, 리턴타입이 없는 유형 public delegate void TestDelegate(object obj1, object obj2); 3) 매개변수와 리턴타입이 모두 있는 유형 public delegate int TestDelegate(object obj1, object obj2); [3가지 단계] 1) Declaration(선.. 2023. 9. 23.