委托学习笔记二(多播委托)

多播委托是指引用多个方法委托。当调用委托时,它连续调用每个方法。为了把委托的单个实例合并为一个多播委托,委托必须是同类型的,返回类型必须是void,不能带输出参数(但可以带引用参数)。
除此之外,它们的声明和实例化都和其他委托没有什么不同。多播委托用于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;
        }

    }


原文地址:https://www.cnblogs.com/wuhuihui_dotnet/p/297018.html