想了解关于委托和事件的简单应用,比如:老板来了,小张说:不能看篮球了。小李说:不能斗地主了,求代码,谢了!!

解决方案 »

  1.   

    给你一个例子,这个例子是《Microsoft.NET.框架程序设计》中的李建忠翻译的。第11章using System;
    public class MailManager
    {
    public MailManager()
    {

    }

    public class MailMsgEventArgs:EventArgs
    {
    public readonly String from;
    public readonly String to;
    public readonly String subject;
    public readonly String body;
    public MailMsgEventArgs(String from,String to,String subject,String body)
    {
    this.from=from;
    this.to=to;
    this.subject=subject;
    this.body=body;
    }
    }
    public delegate void MailEventHandler(object sender,MailMsgEventArgs e);
    public event MailEventHandler MailMsg;
    public virtual void OnMailMsg(MailMsgEventArgs e)
    {
    if (e!=null)
    {
    MailMsg(this,e);
    }
    }
    public void AcceptMail(String from,String to,String subject,String body)
    {
    MailMsgEventArgs e=new MailMsgEventArgs(from,to,subject,body);
    OnMailMsg(e);
    }
    }
    public class Fax
    {
    // public Fax(MailManager mm)
    // {
    // mm.MailMsg+=new MailManager.MailEventHandler(FaxMsg);
    // //mm.MailMsg+=new Fax(mm).FaxMsg;
    // }
    public Fax()
    {
    }

    public void FaxMsg(object sender,MailManager.MailMsgEventArgs e)
    {
    Console.WriteLine("您收到了邮件:");
    Console.WriteLine("From:{0}\nTo:{1}\nSubject:{2}\nBody:{3}\n",e.from,e.to,e.subject,e.body);
    }
    }public class Test
    {
    public static void Main(String[] args)
    {
    MailManager m=new MailManager();
    //MailManager.MailMsgEventArgs me=new MailManager.MailMsgEventArgs("李先生","王小姐","过年好","新年到了,祝你新年快乐!!!");

    //Fax f=new Fax(m);
    Fax f=new Fax();
    m.MailMsg+=f.FaxMsg;
    //m.OnMailMsg(me);
    m.AcceptMail("李先生","王小姐","过年好","新年到了,祝你新年快乐!!!");
    }
    }