C#

C#문법-19 : Delegate - 1, delegate란?, 기본 사용 법

알통몬_ 2019. 6. 12. 16:44
반응형


공감 및 댓글은 포스팅 하는데

 아주아주 큰 힘이 됩니다!!

포스팅 내용이 찾아주신 분들께 

도움이 되길 바라며

더 깔끔하고 좋은 포스팅을 

만들어 나가겠습니다^^

 


Delegate

일반적으로 메소드의 파라미터는 기본 타입 or 객체 타입입니다.

int method(int x, int y){}

void method(AnyClass anyClass){}


Delegate 는 메소드를 다른 메소드로 전달할 수 있도록 하기 위하여

만들어진 개념입니다.



=====================================================

Delegate 정의

기본적인 정의는 추상메소드와 동일합니다. 추가적으로 반환형 앞에 delegate 키워드가 붙습니다.

delegate int MinusDelegate(int x, int y);

정의할 때 중요한 것은 입력 파라미터와 반환 타입입니다.

어떠한 메소드가 delegate 메소드 원형과 일치한다면 

그 메소드는 해당 delegate에서 사용될 수 있습니다.

그리고 Delegate의 파라미터로는 선언한 

Deleagte 와 파라미터가 일치하는 메소드를 넣어주면 끝입니다.

delegate int CustomDelegate(string x);

int FromStrToInt(string x){
return int.Parse(x);
}
void CallDelegate() {
CustomDelegate customDelegate = new CustomDelegate(FromStrToInt);
Running(customDelegate);
}

=====================================================


=====================================================

Delegate 호출

메소드의 파라미터로 사용된 delegate 를 호출하려면 

delegate 객체의 Invoke() 나 BeginInvoke() 메소드를 

사용하여 호출하며, 생략 가능합니다.

=====================================================


=====================================================

Delegate 사용 예제

using System;
using System.Text;


namespace workspace_csharp {

public class Program {


delegate int CustomDelegate(string x);

void Running(CustomDelegate customDelegate) {
int a = customDelegate("100");
System.Console.WriteLine(a);
}

void CallDelegate() {
CustomDelegate customDelegate = new CustomDelegate(FromStrToInt);
Running(customDelegate);
}

int FromStrToInt(string x){
return int.Parse(x);
}

public static void Main(String[] args) {
new Program().CallDelegate();
}
}

}

=====================================================

delegate 의 개념 자체를 처음봐서 적응이 잘 안되네요 ㅎㅎ
머리보단 손으로 노가다를 조금씩 해봐야 개념정리도 잘되고 
사용하는 것도 적응될 듯 합니다.



반응형