任何人都可以以我能理解的方式解释事件吗?

时间:2014-02-20 22:09:42

标签: c# events

我已经编程了大约2个月,我自学了,而我得到了关于继承,多态,接口,代理,数据和基础知识的基础知识。引用类型,循环,if / switch,LINQ,xml,SQL等等。我只是无法绕过事件!

我已经在线阅读了至少4-5种不同的教程和文章,但它们对我来说太混乱了,有一个事件类型,EventHandler,代表,事件提升/订阅,还有太多东西在继续,我不知道我不知道自己是不是很头脑,但这对我来说难以置信。

请以像我这样的初学程序员能够理解的方式向我解释事件,非常感谢!

2 个答案:

答案 0 :(得分:1)

行动和反应。

正如约翰在你的评论中所说的那样......“当我点击按钮时,会发生一些事情!”

答案 1 :(得分:0)

它没有比这简单得多:

http://en.wikipedia.org/wiki/Observer_pattern

在他们的核心事件中只包含一个函数列表(或至少是一种访问这些函数的方法),这些函数将被调用,引发事件。提升事件只是触发主题通知所有已订阅的函数(读取:包含在列表中)到该事件的行为。

此订阅列表的组成方式因框架的功能而异。在观察者模式(通常在Java中使用)中,您可以通过传入已实现适当接口的对象来完成此操作。主题遍历观察者列表并调用接口定义的函数。这种模式的缺点是你必须有两个完全不同的主题之间的命名冲突的可能性,这可能是困难的(虽然不是不可能)解决。

代表通过允许您传递函数或方法本身来解决此问题。委托有点像接口,因为它建立了一个契约,但它只是为一个函数指定一组参数而不是类成员。然后,主题可以遍历这些方法的列表,这些方法通常被称为事件处理程序,并传递适当的参数。代表们比观察者模式更麻烦,但它们仍然很耗时。

最近,C#添加了通用代理ActionFunc,这些代理更容易使用。