大家看我对C# 事件的理解对不对,请指点

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

namespace 自定义事件
{

class EventDispatcher
{
    public delegate void EventHander(Event ev);
    public event EventHander eventHander;
    public void Dispatch(Event ev)
    {
        if (eventHander != null) eventHander(ev);
    }
}

class Event:EventArgs
{
    public string message;
    public Event(string message)
    {
        this.message = message;
    }
}

class Sprite:EventDispatcher
{
    public void addEventListener(EventHander hander)
    {
        eventHander += new EventHander(hander);
    }
}
class Program
{
    static void Main(string[] args)
    {
        Sprite sprite =new Sprite();
        sprite.addEventListener(Receiver);
        sprite.addEventListener(Hander);
        sprite.eventHander += sprite_eventHander;
        Console.ReadKey();
        sprite.Dispatch(new Event("我发送了一个消息"));
        Console.ReadLine();
        Console.ReadKey();
    }

    static void sprite_eventHander(Event ev)
    {
        Console.WriteLine("sprite_eventHander收到消息" + ev.message);
    }

    private static void Hander(Event ev)
    {
        Console.WriteLine("Hander收到消息" + ev.message);
    }

    private static void Receiver(Event ev)
    {
        Console.WriteLine("Receiver收到消息:" + ev.message);
    }
}

}

sprite.eventHander += sprite_eventHander;
这既是动态绑定事件,就和你双击按钮道理一样