委托练习一

 1class PubEventArgs:System.EventArgs//继承类
 2{
 3    private readonly string m_magazinename;
 4    private readonly DateTime m_pubdate;
 5    public PubEventArgs(string magazinename,DateTime pubdate)
 6    {
 7        m_magazinename=magazinename;
 8        m_pubdate=pubdate;
 9        
10    }

11    public string Getname
12    {
13        get{return m_magazinename;}
14    }

15    public DateTime Getdate
16    {
17        get {return m_pubdate;}
18    }

19    
20    
21
22}

23class Publisher
24{
25    public delegate void PubComputerEventHandler(object sender,PubEventArgs e);//定义委托
26    public event PubComputerEventHandler PubComputer;//定义事件
27    protected virtual void OnPubComputer(PubEventArgs e)//引发事件
28    {
29        PubComputerEventHandler handler=PubComputer;
30        if(handler!=null)
31        {
32            handler(this,e);
33        }

34    }

35    public void IssueComputer(string magazinename,DateTime pubdate)//事件发行的方法
36    {
37        Console.WriteLine("发行"+magazinename);
38        OnPubComputer(new PubEventArgs(magazinename, pubdate));
39    }

40    
41}

42class Subscriber
43{
44    private string name;
45    public Subscriber(string name)
46    {
47        this.name=name;
48        
49        
50    }

51    public void receive(object sender,PubEventArgs e)//预委托的方法
52    {
53        Console.WriteLine(e.Getdate+" "+name+"已经收到"+e.Getname);
54    }

55}

56class testClass
57{
58    static void Main()
59    {
60        Publisher pub=new Publisher();
61        Subscriber ZS=new Subscriber("张三");
62        Subscriber LS=new Subscriber("李四");
63        pub.PubComputer +=new Publisher.PubComputerEventHandler(ZS.receive);
64        pub.PubComputer +=new Publisher.PubComputerEventHandler(LS.receive);
65        pub.IssueComputer("电脑杂志",Convert.ToDateTime("2008-5-5"));
66        
67    }

68}
posted @ 2008-05-14 02:24  冷风醉饮  阅读(82)  评论(0)    收藏  举报