공부/C#

델리게이트(delegate) - 대리자

미다손 2016. 5. 8. 21:41


        /// <summary>

        /// 델리게이트(대리자) 선언

        /// </summary>

        delegate void Work();

        delegate void Work11(int num);


   static void Work_01()

        {

            Console.WriteLine("주문 받겠습니다.");

        }

        static void Work_02()

        {

            Console.WriteLine("계산 하겠습니다.");

        }

        static void Work_03()

        {

            Console.WriteLine("기다려주세요.");

        }

        static void Work_04()

        {

            Console.WriteLine("벨이 울림.");

        }

        static void Work_05(int i)

        {

            Console.WriteLine("테스트 용. {0}", i);

        }


   //메인 함수

        static void Main(string[] args)

        {

            //델리게이트 사용

            Work myWork = new Work(Work_01);    //0

            myWork += new Work(Work_02);//1

            myWork += new Work(Work_03);//2

            myWork += new Work(Work_04);//3

            myWork += new Work(Work_02); //4


            myWork();

            myWork -= new Work(Work_02); //뒤에꺼부터 없어짐 - 4가 없어짐

            myWork();


            //myWork += new Work(Work_05);  //인수가 달라서 안됨

            //인자가 있는 델리게이트 사용. 델리게이트로 동일한 형태의 인자와 리턴이 있어야 함

            Work11 myWork11 = new Work11(Work_05);

            myWork11(222);

        }