본문 바로가기
Study/C#

[C#][Study][기초다지기] 딜리게이트 Multicast Delegate

by 스테디코디스트 2023. 9. 23.
반응형

Multicast Delegate

- delegate에 여러 함수를 연결해서 사용가능

- 여러 함수가 연결된 delegate 호출시 FIFO(First In First Out) 순으로 호출

- '+' 또는 '+=' 가 delegate에 함수를 추가할 때 사용

- '-' 또는 '-=' 은 delegate에서 함수를 제거할 때 사용

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
 
namespace Multicast_Delegates
{    
    class TestDeleGate
    {
    	// 선언
        public delegate void ShowMessage(string s);
        
        public void message1(string msg)
        {
            Console.WriteLine("1st Message is : {0}", msg);
        }
        
        public void message2(string msg)
        {
            Console.WriteLine("2nd Message is : {0}", msg);
        }
        
        public void message3(string msg)
        {
            Console.WriteLine("3rd Message is : {0}", msg);
        }
    }
    class Program
    {
        static void Main(string[] args)
        {
            TestDeleGate td = new TestDeleGate();
            TestDeleGate.ShowMessage message = null; // 인스턴스화
            
            // delegate에 함수 추가
            message += new TestDeleGate.ShowMessage(td.message1);
            message += new TestDeleGate.ShowMessage(td.message2);
            message += new TestDeleGate.ShowMessage(td.message3);
            
            // 호출
            message("Hello Multicast Delegates");
            
            // delegate에서 함수 제거
            message -= new TestDeleGate.ShowMessage(td.message2);
            Console.WriteLine("----------------------");
            
            // 호출
            message("Message 2 Removed");
            Console.ReadKey();
        }
    }
}