반응형
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();
}
}
}