언어 정리/c#

c# - delegate

rimugiri 2023. 1. 11. 19:12
728x90

c++에서 함수포인터와 유사한 delegate(대리자)를 간단한 사용법을 통해 알아보자

 

1. delegate 선언

//delegate 반환형식 이름(사용할 매개변수)
delegate int TestDelegate(int item);

 

2. delegate 사용 예제

//delegate 선언
delegate void SayWhat();

//Hello 출력함수
static void Hello(){
	Console.WriteLine("Hello");
}

//Bonjour 출력함수
static void Bonjour(){
	Console.WriteLine("Bonjour");
}

//delegate사용예제
static void IWantToSay(SayWhat say){
	say();
}

static void Main(string[] args){
	//함수저장
	SayWhat say = new SayWhat(Hello);
    	//함수저장2
    	say += Bonjour;
        //함수해제
        //say -= Bonjour
	IWantToSay(say);
}

//출력
Hello
Bonjour

 

위 방식의 장점

1. 함수여러개를 간단한코드로 호출 가능하다

2. 간편하게 원하는 함수를 호출하게 할 수 있다.

 

3. 유용한 delegate

// 반환타입이 있을경우
Func<매개변수타입1, 매개변수타입2, ..... 반환타입>
// 반환타입이 없는경우
Action<매개변수타입1, 매개변수타입2,,,, 매개변수타입16>

Func 나 Action처럼 이미 c#에 유용한 delegate가 있다.

728x90

'언어 정리 > c#' 카테고리의 다른 글

c# - delegate 사용법  (2) 2023.11.26
c# 코드시간 측정 방법  (0) 2023.02.16
c# 가변 배열  (0) 2022.12.31
c# 문자열 정리  (0) 2022.12.31
열거형(enum)  (0) 2022.12.27