[C#] Delegate

c# 2023. 1. 10. 17:25
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
Posted by 바르마스
,