事件调用

时间:2011-11-22 05:54:08

标签: c#

如果一个类声明了一个事件,那么只能从该类触发事件。限制事件调用的原因是什么?

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

namespace ConsoleApplication12
{
    delegate void Function();

    class EventHandling
    {
        public event Function fun;

        public void AddEvents(Function events)
        {
            fun += events;
        }

        public void Notify()
        {
            fun();
        }
    }

    class Program
    {

        static void Main(string[] args)
        {
            EventHandling aEvtHandler = new EventHandling();
            Function aFun = new Function(Display);
            aEvtHandler.AddEvents(aFun);
            aEvtHandler.Notify();
        }

        static void Display()
        {
            Console.WriteLine("in the display");
            Console.Read();
        }
    }
}

1 个答案:

答案 0 :(得分:1)

从一个定义它的类中解雇一个事件才有意义。

如果我创建一个Bike类并且该类包含EngineStarted事件,那么该事件何时被引发?当发生某些事情使发动机启动时。因此,被触发的事件意味着类的实例(Bike对象)向外界报告引擎已启动。

没有意义的是,另一个物体会向全世界报告特定自行车的引擎启动,而没有自行车本身首先报告过。