728x90
delegate string ConcatMsg(string str, int num);
delegate void DelegateMethod();
delegate void DelegateMethod2(string str);
delegate int DelegateMultiply(int x, int y);
static void Main(string[] args)
{
string name = "장철수";
int age = 32;
ConcatMsg concat = new ConcatMsg(msg);
Console.WriteLine(concat(name, age));
Console.WriteLine("delegate 멀티 캐스팅");
DelegateMethod dm = msg1;
dm += msg2;
dm += msg3;
dm(); // 1 2 3
//빼기
Console.WriteLine("메소드 삭제");
dm -= msg2;
dm(); // 1 3
Console.WriteLine("콜백");
DelegateMethod2 result = msg_Callback;
sumMethod(10, 5, result);
Console.WriteLine("익명메소드");
//다른코드에서 재사용할일 없는 메소드
DelegateMultiply dmMulti;
dmMulti = delegate (int a, int b)
{
return a * b;
};
Console.WriteLine("익명메소드 결과 : {0}", dmMulti(5, 10));
string msg(string str, int num)
{
return "이름: " + str + " 나이: " + num;
}
void msg1()
{
Console.WriteLine("1");
}
void msg2()
{
Console.WriteLine("2");
}
void msg3()
{
Console.WriteLine("3");
}
void msg_Callback(string _msg)
{
Console.WriteLine(_msg);
}
void sumMethod(int x, int y, DelegateMethod2 dm2)
{
int sum = x + y;
dm2("합계 : " + sum);
}
}
728x90
'c#' 카테고리의 다른 글
[C#] Stack, Queue, Hashtable (0) | 2023.01.11 |
---|---|
[C#] 이벤트 핸들러 (0) | 2023.01.11 |
[C#] 추상클래스 (0) | 2023.01.10 |
[Unity] 기본 정리 (문서화) (0) | 2023.01.09 |
[C#] 상속 protected (0) | 2023.01.09 |