C#入门(十四 )委托和事件

前言:

我们先看下方法之间的调用
public void Method01()
{
Method02();
}
public void Method02()
{
}
这是我们常规的一个写法,但是也暴露了一个问题,我们这样就把方法给写死了,Method01只能调用Method02!那么我们如何来改变这样的情况。
我们想到的是,能不能像传入参数一样将方法作为某种类型的变量传到另外一个方法。

在这里插入图片描述
所以,要解决的是,如何来定义这么一个类型,C#就专门提供了这样的一个关键字,让我们自定义这种类型,这个关键字叫做delegate

委托

委托的定义: 委托是一个类,它定义了方法的类型,使得可以将方法当作另一个方法的参数来进行传递,这种将方法动态地赋给参数的做法,可以避免在程序中大量使用If-Else(Switch)语句,同时使得程序具有更好的可扩展性。

委托的使用将方法作为方法的参数.

通过使用delegate加上方法的签名及返回值,我们就可以声明一个委托类型。

例如:
public delegate void MyDelegate();
可以看到,他的签名和声明一个自定义函数差不多,不过就是多了一个delegate,声明完之后,我们就完成了MyDelegate这个类的定义,我们可以像类一样使用它,
但是由这个类声明的对象只能来引用函数,并且函数只能是无参且无返回类型的。

在这里插入图片描述
一:将方法作为方法的参数

无参方法调用代码:
在这里插入图片描述
有参方法的调用:
在这里插入图片描述

两种方法运行结果一样都是:
在这里插入图片描述

到这里大家可能就有点明白委托的使用了吧,将方法作为方法的参数

二:将委托绑定多个方法:

(1):+= 绑定方法:

代码演示:
在这里插入图片描述
在这里插入图片描述
(2):-= 解除绑定方法:
代码演示:
在这里插入图片描述
在这里插入图片描述
到这里大家就明白委托的第二个用处了吧,绑定多个方法。

在这里插入图片描述

事件

在这里插入图片描述
在这里插入图片描述
声明一个事件不过类似于声明一个进行了封装的委托类型的变量而已。

事件的作用: 它封装了委托类型的变量,使得:在类的内部,不管你声明它是public还是protected,它总是private的。在类的外部,注册“+=”和注销“-=”的访问限定符与你在声明事件时使用的访问符相同。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值