简单理解委托和事件

来源:互联网 发布:mac地址表老化时间 编辑:程序博客网 时间:2024/06/04 23:39

委托

什么是委托?

  委托就是持有一个或者多个方法的对象!并且该对象可以执行,可以传递。

声明委托类型?

  委托可以持有方法,那么持有什么样的方法呢?
  可以声明,它是一种引用类型。

delegate void ActCute();

定义委托类型的对象?

  既然是种类型,就可以定义该类型的对象。

ActCute actCute;

给委托对象赋值?

class Dog{    public void WagTail()     {        ....    }}//使委托持有上面定义的方法actCute = dog.WagTail;

使用委托类型?

  像调用函数一样使用委托类型。

actCute();

什么是匿名方法?

delegate void ActCute();ActCute del;del = delegate(){......};

什么是Lambda表达式?

del = delegate(){......};del = () => {......};

事件

发布者和订阅者

  通知某件事情发生的,就是发布者。(我发布了微博)
  对某件事情关注的,就是订阅者。(我关注了微博)

事件触发和注册

  事件发生时,会通知所有关注该事件的订阅者。(发了一条新微博)
  想在事件发生时被通知,必须注册以表示关注。(我关注了微博)

用程序语言解释

  事件发生时,通知订阅者,就是调用订阅者的注册函数。注册,就是告诉发布者调用哪一个注册函数。

事件声明

delegate void Handler();public event Handler NewDog;

  NewDog是一个成员,并且会被隐式自动初始化为null

事件订阅

NewDog += 方法 //订阅NewDog -= 方法  //取消订阅

  方法可以是:实例方法,静态方法,匿名方法,Lambda表达式。

事件触发

if( NewDog != null){    NewDog();}

  事件可以理解成是一种封装的受限制的委托。

原创粉丝点击