感觉这两部分还可以,不过事件的第二课挺难懂,主要是因为老师把语言规范了,也许对于初学者来说很难适应吧.以后也许好一些...
去百度发了个问题,当然了是个菜鸟问题,其实看了后面的懂了一些,但还是看看别人怎么说吧:

using System;
using System.Collections.Generic;
using System.Text;

class Publisher
{
    public delegate void PubComputer(string magazineName);//声明事件所需的代理
    public delegate void Publife(string magazineName);
    public event PubComputer OnPubComputer;//事件的声明
    public event Publife OnPubLife;

    public void issueComputer()//触发事件的方法
    {
        if (OnPubComputer != null)
        {
            Console.WriteLine("发行电脑杂志");
            OnPubComputer("电脑杂志");
        }
    }
    public void issueLife()
    {
        if (OnPubLife != null)
        {
            Console.WriteLine("发行生活杂志");
            OnPubLife("生活杂志");
        }
    }
}
class Subscriber//订阅者
{
    private string name;
    public Subscriber(string name)
    {
        this.name = name;
    }
    public void Receive(string magazineName)//向事件订阅者中定义事件处理程序
    {

        Console.WriteLine(name+"已经收到"+magazineName);
    }
}
class Story
{
    static void Main()
    {
        Publisher pub = new Publisher();
        Subscriber zs = new Subscriber("张三");
        pub.OnPubComputer+= new Publisher.PubComputer(zs.Receive);//向事件发行者订阅一个事件
        Subscriber ls = new Subscriber("李四");
        pub.OnPubComputer += new Publisher.PubComputer(ls.Receive);
        pub.OnPubLife += new Publisher.Publife(ls.Receive);
        pub.issueComputer();//触发事件
        pub.issueLife();

        Console.WriteLine("一年以后");
        pub.OnPubComputer -= new Publisher.PubComputer(ls.Receive);
        pub.issueComputer();//触发事件
        pub.issueLife();
        Console.ReadKey();
    }
}
请问为什么OnPubComputer("电脑杂志");和OnPubLife("生活杂志");的值要传递给public void Receive(string magazineName)方法?
OnPubLife("生活杂志");和OnPubComputer("电脑杂志");还是事件么?

posted on 2007-11-02 17:32  iMac G6  阅读(102)  评论(0)    收藏  举报