除此之外,它们的声明和实例化都和其他委托没有什么不同。多播委托用于C#的事件模型中。
您可以把多播委托看作两个或多个标准委托串在一起。委托可以使用算术运算符+和+=串在一起。委托也能使用-和-=运算符从多播委托中删除。当调用多播委托里,委托所表示的每个方法依次调用。如果有任何参数,它们将用于所有的方法。
多播委托例子代码:
public delegate void Message();
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Message msg;
//创建一个多播委托
msg=new Message(Messages.Greeting);
msg+=new Message(Messages.DateAndTime);
Message msg2=new Message(Messages.Maintenance);
msg+=msg2;
msg();
Console.ReadLine();
}
}
public class Messages
{
public static void Greeting()
{
Console.WriteLine("Welcome to Mandolin Co.");
return;
}
public static void DateAndTime()
{
Console.WriteLine(DateTime.Now.ToLongDateString());
return;
}
public static void Maintenance()
{
Console.WriteLine("System maintenance be done tonight");
return;
}
}
class Class1
{
/// <summary>
/// 应用程序的主入口点。
/// </summary>
[STAThread]
static void Main(string[] args)
{
//
// TODO: 在此处添加代码以启动应用程序
//
Message msg;
//创建一个多播委托
msg=new Message(Messages.Greeting);
msg+=new Message(Messages.DateAndTime);
Message msg2=new Message(Messages.Maintenance);
msg+=msg2;
msg();
Console.ReadLine();
}
}
public class Messages
{
public static void Greeting()
{
Console.WriteLine("Welcome to Mandolin Co.");
return;
}
public static void DateAndTime()
{
Console.WriteLine(DateTime.Now.ToLongDateString());
return;
}
public static void Maintenance()
{
Console.WriteLine("System maintenance be done tonight");
return;
}
}