[CS] 메모15. 델리케이트
윤대희님의 강의 21강
델리게이트
번역: 대표, 파견
콜백 메서드를 구현할때 많이 사용됨.
한정자 delegate 반환형식 델리케이트이름(메개변수목록);
델리게이트 선언
private delgate int MyDeligate(intt a, int b)
- MyDelegate로 선언된 델리게이트에 매개변수(int)를 2개 받아 사용함.
int Plus(int a, int b)
{
return a + b;
}
int Minus(int a, int b)
{
return a - b;
}
- Plus와 Minus 메서드를 생성함. MyDelegate와 매개변수의 개수는 동일해야함.
- C에서 주구장창 썼던 구조체 내에 있는 포인터함수처럼 쓰는듯.
- 진짜로 이벤트 콜백함수 느낌으로 사용하겠네 싶음.
private void Form1_Load(object sender, EventArgs e)
{
MyDelegate function;
function = new MyDeligate(Plus);
Console.WriteLine(function(3,4));
function = nwe MyDeligate(Minus);
Console.WriteLine(function(7,5));
}
- 변수 두개를 사용하는 델리게이트함수를 가져와서, 새로운 다른함수들(매개변수 수가 같은)을 들고와서 사용하는 모습이다.
델리게이트 일반화(Delegate Generalization)
델리게이트와 제너럴을 함께 사용하여 코드의 자유도를 높일 수 있다.
private delegate T MyDelegate<T>(T a, T b);
int Plus(int a, int b)
{
return a+b;
}
int Minus(int a, int b)
{
return a-b;
}
int Multiply(int a, int b)
{
return a*b;
}
int Division(int a, int b)
{
return a/b;
}
private void Form1_Load(object sender, EveentArgs)
{
MyDelegate<int> function1 = new MyDelegate<int>(Plus);
Console.WriteLine(function1(3, 4));
MyDelegate<int> function2 = new MyDelegate<int>(Minus);
Console.WriteLine(function2(3, 4));
MyDelegate<double> function3 = new MyDelegate<double>(Multiply);
Console.WriteLine(function3(3, 4));
MyDelegate<double> function4 = new MyDelegate<double>(Division);
Console.WriteLine(function4(3, 4));
}
델리게이트 체인
여러개의 메서드를 동시에 참조하여사용하는 것.
델리게이트를 호출할 때 델리게이트 체인(+=, -=)
에 따라 순서대로 호출됨
- 산술기호를 이용하여
델리게이트끼리 연결시켜 사용
할 수 있음.
private delegate void MyDelegate(string text);
void num_1 (string text)
{
Console.WriteLine("1번 : {0}", text);
}
void num_2(string text)
{
Console.WriteLine("2번 : {0}", text);
}
void num_3(string text)
{
Console.WriteLine("3번 : {0}", text);
}
private void Form1_Load(object sender, EventArgs e)
{
MyDelegate dele = new MyDelegate(num_1);
dele += new MyDelegate(num_2);
dele += new MyDelegate(num_3);
dele("사람");
dele -= new MyDelegate(num_2);
dele("인간");
}
// 1번 사람, 2번 사람, 3번 사람
// 1번 인간, 3번 인간
Author And Source
이 문제에 관하여([CS] 메모15. 델리케이트), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@psh4204/CS-메모15.-델리케이트저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)