多播委托是指引用多个方法委托。当调用委托时,它连续调用每个方法。为了把委托的单个实例合并为一个多播委托,委托必须是同类型的,返回类型必须是void,不能带输出参数(但可以带引用参数)。
除此之外,它们的声明和实例化都和其他委托没有什么不同。多播委托用于C#的事件模型中。
您可以把多播委托看作两个或多个标准委托串在一起。委托可以使用算术运算符+和+=串在一起。委托也能使用-和-=运算符从多播委托中删除。当调用多播委托里,委托所表示的每个方法依次调用。如果有任何参数,它们将用于所有的方法。
多播委托例子代码:
除此之外,它们的声明和实例化都和其他委托没有什么不同。多播委托用于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;
}
}