c# - 有人可以向我解释一下事件到底是什么以及与委托(delegate)有什么区别吗?

标签 c# events delegates

<分区>

Possible Duplicate:
What is the difference between a delegate and events?

我无法理解委托(delegate)和事件之间的区别

最佳答案

假设您的公司有一位客户 Petunia Dursley。 Petunia 是女性,住在#4 Privet Drive。

您可能希望在您的计算机系统中使用对象委托(delegate)您的客户,因此您创建了一个具有属性的客户类,例如“姓名”、“地址”和“性别”。也许 Name 和 Address 都是字符串,也许“Sex”是一个枚举。

现在,Petunia 的地址是一个字符串吗?当然不是。这是一个地址。它在您的模型中由类型为字符串的对象表示。因为 Petunia 这个人有 name、address 和 sex 等属性,所以你系统中对应的对象也有 Name、Address 和 Sex 属性。

类中的属性是业务领域中事物属性的模型,例如客户的属性。实现该属性的机制的选择是基于什么对人们构建和使用软件模型最方便。在这种情况下,机制可能是一堆不同类型的字段,因此属性包含访问该字段的代码。这些是实现属性的机制

事件和委托(delegate)具有相同的关系。 “事件”是“您希望了解的发生的事情”的软件表示。委托(delegate)是实现事件机制

一个按钮可以被点击;这是关于按钮的事实。该事实通过“点击”事件在软件中建模。单击按钮时,通知相关方已发生单击事件的机制是一个委托(delegate)

总结:事件和属性用于表示类型业务领域中的概念。字段(通常)是属性用于完成其工作的机制,而委托(delegate)(始终)是事件用于完成其工作的机制

清楚了吗?

关于c# - 有人可以向我解释一下事件到底是什么以及与委托(delegate)有什么区别吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4890791/

相关文章:

c# - 字符串每 3 个单词拆分一次

javascript - 通过 f11 启用全屏后通过 javascript 禁用全屏

events - Google 跟踪代码管理器 - 使用内联 onclick 属性创建事件

jquery - 如何防止滑动触发点击?

c# - 变更通知的最佳模式(事件或委托(delegate))

c# - 有windows服务好还是控制台应用好?

c# - 为什么 List<IShape>.Sort() 调用 CompareTo(Object) 而不是 CompareTo(Shape)?

ios - CLLocationManagerDelegate 方法未更新

ios - 9Implementing Nuance Speech Recognition on Swift, cannot listen onResult, onError... 事件

c# - 如何在逐行从文本文件读取数据时捕获并忽略或处理异常