C#学习过程中的关于事件和委托的理解

本文通过比喻解释了C#中的委托和事件,强调了它们的相似性和差异,如委托的买菜例子,以及委托和事件在声明、实例化和触发上的异同。作者认为,尽管在使用上有相似之处,但为保持代码清晰,事件通常建议在单独的类中定义。
摘要由CSDN通过智能技术生成

《C#图解教程》的书本中提到委托和事件是很相似的,事件更像是处理某一种事情的特殊的委托……

书本写得很严谨,但是不方便初学者去学习。为了方便记忆,我用了比喻的方式来表达我对事件和委托的理解。

关于委托的理解:

委托可以比喻成一个人A,他打算要去买“菜”(“菜”就是签名或者参数),而有很多人也想去集市买东西,甲(函数或者方法)想买“菜”,乙想买“肉”,丙想买“衣服”。

那么A就想着,既然都要去买菜,干脆我一个人帮他们买完吧。于是甲就找到A,把买菜的事委托给A(添加委托)。乙和丙也想去找A帮忙,但是A只回去买菜,所以无法接受他们的请求(不同签名的无法添加委托)。

最后A就接受甲的委托,一起把菜给买回来。

关于事件的理解:

事件与委托的不同与相同点:

1、声明:委托只要包含关键字“delegate”;事件要包含关键字“event”和委托类型(不是委托的实例名)

2、实例化:都可以用new来创建并初始化。

3、赋值和初始化:都可以用=或者+=,-=来初始化、增加或移除方法(注意,是方法不是 类 )。

4、触发:委托和事件可以当做是一种方法,直接按方法(或叫函数)的方式,提供参数直接调用,从而触发添加进去的

5、编程习惯或使用场景:

(1)委托一般在主程序中进行声明和赋值,直接添加需要的方法。用法比较简单。可能适合体量比较小的程序,增加代码的复用。

(2)事件使用过程一般会创建“订阅者”类和“发布者”类。“发布者”负责声明事件,和制定触发规则(可以没有规则直接触发)。“订阅者”负责提供处理程序和订阅事件。主程序中,只要实例化“订阅者”和“发布者”。其中,“订阅者”以“发布者”为参数创建实例并初始化(名为订阅事件)。之后,主程序就可以直接触发“订阅者”中的事件。可能适合体量较大,复杂的程序?

综上,按我的我理解,事件和委托实际上除了声明的方式不同,其他几乎相同,如果不考虑其他因素,使用的时候代码都差不多。当然为了代码的维护和可读性,事件还是分开不同的类创建比较合适。当然这些都是我学习过程中一些理解和见解,记录下来给自己阅读,受限于学习和实践时间较短,理解肯定有偏差或者谬误,欢迎各位大佬指出哈(挠头)

  • 12
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值