delegate 关键字用于声明一个引用类型(也就是一个对象,换句话说就是那些方法的指针),该引用类型可用于封装命名方法或匿名方法。通过将委托与命名方法或匿名方法关联,可以实例化委托。实例化委托有什么用呢?这样你就可以通过委托调用那些命名方法或者匿名方法了。
优点:
1、如果知道现有类中有委托,并且知道委托的签名方式,则可以向现有类中添加符合委托签名的新实例方法、静态方法或者匿名方法。
例如:类TextBox中有一个EventHander委托的实例OnChange(其实这个是event,当然event是delegate的一种),我们知道它的签名方法是void EventHander (object sender,EventArgs e),这样我们就可以在外面给它添加方法和实例了,txt.OnChange += new EventHandler(里面写你想要事件触发后执行的方法名)。
2、 委托允许将方法作为参数进行传递。
3、 委托可用于定义回调方法。
event 关键字用于在类中声明事件。
事件是一类特殊的委托(因为加了一个event修饰符,这个event什么作用呢?就是限制你这个是事件,如果出现在定义该委托的类之外,则只能出现在+=或者-=左边,相反在定义它的类里是不算的,可以直接调用,不然怎么触发啊),如果给事件订阅了方法,则该委托就实例化了,可以用了。
来源:https://www.cnblogs.com/i_aspx/archive/2010/01/22/1653804.html