언어/C#

[C#] 델리게이트 체인(delegate chain) 단순한 예제

돌멩이수프 2022. 6. 17. 15:39
728x90

델리게이트 객체 내에 여러 메서드에 대한 리스트 정보를 가지게 하는 방법을 델리게이트 체인이라고 한다.

 

static void Main(string[] args)
{
    MyDel myDel = new MyDel(test1);
    myDel = new MyDel(test2);
    myDel = new MyDel(test3);

    myDel();
}

 

보통 우리가 myDel에 test를 담고 싶으면 =을 사용한다. 위에 내용을 실행하면

 

 

이렇게 마지막에 담은 test3의 "세 번째"라는 내용만 출력된다. 만약 내가 test1과 test2에 담긴 내용도 다 보고 싶다면 =을 +=로 변경해주기만 하면 된다.

 

static void Main(string[] args)
{
    MyDel myDel = new MyDel(test1);
    myDel += new MyDel(test2);
    myDel += new MyDel(test3);

    myDel();
}

 

 

이렇게 +=으로 델리게이트에 메서드를 담아주면 리스트로 정보가 저장되어 이전 정보를 잃지 않을 수 있다.

 

 

using System;

namespace ServerStudy
{
    class Program
    {
        delegate void MyDel();

        static void test1()
        {
            Console.WriteLine("첫 번째");
        }

        static void test2()
        {
            Console.WriteLine("두 번째");
        }

        static void test3()
        {
            Console.WriteLine("세 번째");
        }

        static void Main(string[] args)
        {
            MyDel myDel = new MyDel(test1);
            myDel += new MyDel(test2);
            myDel += new MyDel(test3);

            myDel();
        }
    }
}
728x90