delegate 개념

폭풍저그머성찡 ㅣ 2018. 12. 17. 12:39

C언어의 함수 포인터에 빗대면 좀 더 쉽게 이해 할 수 있다.


보통 메서드들은 인자로 값이나 주소를 받기 마련인데


델리게이트를 사용하여 메서드의 인자로 메서드를 전달 할 수 있다.


void myrun(delegate mydelegate) {

...

}


이런식으로 말이다.



delegate의 선언은


delegate int mydelegate(string str);


델리게이트를 사용할 때 가장 주의해야하는 점은 인자와 반환타입이다. 



델리게이트의 선언문이 앞에 있는 delegate 예약어를 빼면 일반적인 함수 원형 선언과 비슷해보이기 때문에 헷갈릴 수 있지만


델리게이트는 동작할 때 클래스처럼 동작한다.


delegate int MyDel(string s);


int atoi_10(string str) {

foreach (c in str) {

if( Char.IsDigit(c) ) {

throw new System.ArgumentException("Parameter should be Digit!", "original");

}

}

int co = str.Length;

int mask = 1;

int sum;

for(int i = co - 1; i >= 0; i--) { 

sum += ( (int)str - 48 ) * mask;

mask *= 10;

}

return sum;

}


static void main(string argv[]) {

MyDel md = new MyDel(atoi_10);

int ret = md.Invoke("123");

Console.WriteLine({ret});

}


이런 식으로 가능함





'공부 > C#' 카테고리의 다른 글

static 개념  (0) 2018.12.17
클래스  (0) 2018.12.15
데이터타입과 변수  (0) 2018.12.15