Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/285.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 有人能用我能理解的方式解释事件吗?_C#_Events - Fatal编程技术网

C# 有人能用我能理解的方式解释事件吗?

C# 有人能用我能理解的方式解释事件吗?,c#,events,C#,Events,我已经编程了大约2个月了,我自学成才,同时我掌握了有关继承、多态性、接口、委托、数据和引用类型、循环、if/switch、LINQ、xml、SQL等的基本知识。我就是不能对事件掉以轻心 我已经在网上阅读了至少4-5个不同的教程和书面材料,但它们对我来说太混乱了,有事件类型、事件处理程序、委托、事件引发/订阅,有太多的东西在进行,我不知道我是否头脑糊涂,但这让我非常困惑 请以一种像我这样完全初学者程序员都能理解的方式向我解释事件,非常感谢 作用和反应 正如约翰在你的评论中所说的。。“当我点击一个按

我已经编程了大约2个月了,我自学成才,同时我掌握了有关继承、多态性、接口、委托、数据和引用类型、循环、if/switch、LINQ、xml、SQL等的基本知识。我就是不能对事件掉以轻心

我已经在网上阅读了至少4-5个不同的教程和书面材料,但它们对我来说太混乱了,有事件类型、事件处理程序、委托、事件引发/订阅,有太多的东西在进行,我不知道我是否头脑糊涂,但这让我非常困惑

请以一种像我这样完全初学者程序员都能理解的方式向我解释事件,非常感谢

作用和反应


正如约翰在你的评论中所说的。。“当我点击一个按钮时,事情发生了!”

没有比这更简单的了:

在它们的核心事件中,只包含一个函数列表(或者至少是访问这些函数的一种方式),在引发事件时,这些函数将被称为。引发一个事件仅仅是触发主体通知订阅该事件的所有函数(读:包含在列表中)的行为

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

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


最近,C#添加了通用委托,这更容易使用。

您的站点不正确。一个关于真实编码问题的问答网站也是如此。一个事件类似于一个有人可以响应的动作。如果我摔倒(事件),你可以帮我站起来(处理者)。作为初学者,最好专注于概念的高级理解。不要迷失在细节和与其他技术(如委托或设计模式等)相似之处的森林中。事件驱动编程令人困惑,因为程序并不总是有程序员可见的开始或结束。在幕后,实际的代码仍在按顺序运行,但作为开发人员,您需要担心的是“当我单击此按钮时,此代码将执行”。您的开发环境将负责其余的工作。设定现实的目标,两个月内您无法理解事件。除非你买了一个脑移植,否则我们不是一个供体。我可以用“观察者模式”来向你解释,但你只做了两个月的编程,所以现在设计模式可能有点过头了。”。