我是C#编程语言的学习者。我无法理解有关Events and Delegates的基本思想。 我看过很多关于Events and Delegates教程Events and Delegates但是我对它们的概念还是很困惑,另外我也不了解使用事件的基础,我对Delegates有些了解,委托类似于函数指针,我们可以使用Delegate调用任何函数具有相同的参数和返回类型,但是为什么要使用事件。有人可以同样地阐明一种情况,在这种情况下利用事件很重要,因为如果我不利用Events ,一切都很好,请解释一下EventHandler是类型还是类? 在下面的代码中

public static event EventHandler myevent;

谢谢。

#1楼 票数:1 已采纳

如果您得到的代表超过了您想像的事件,那么您将可以按需致电(如果您提出该事件),这些事件只是这些代表的集合/列表,仅此而已。

当您不知道(或不想知道)谁可能对这些信息感兴趣时,这是一种使信息从您的对象中流出的便捷形式。

对于问题的第二部分: EventHandler只是一个提供通用格式的委托 (事件的发送方和信息为EventArgs

#2楼 票数:0

事件会引发某些事件的标记,常见的事件是单击按钮时,事件引发告诉其他人“某事”的发生。 引发该事件时,事件处理程序可以执行某些操作。

因此,当您单击某个按钮时,您可能需要执行某些操作,因此可以将处理程序设置为在单击该按钮时激活。 您还可以将多个事件处理程序附加到特定事件,每个事件处理程序执行不同的操作。

event关键字只是创建自己的“按钮单击”或“按选择更改”事件的一种方式,EventHandler可让您捕获它们并在此之后做一些事情。

#3楼 票数:0

EventHandler是一个委托,是一个委托,是一个委托...函数模式,如果可以的话。

整个EventDelegate系统更多地是一种设计模式,已嵌入到该语言中。 一旦习惯了并开始定义自己的DelegatesEventArgs您会发现它非常方便。 同样,它们的用法是常识,因此,如果要共享库,则需要较少的文档。

  ask by Amaid Niazi translate from so

未解决问题?本站智能推荐:

2回复

C#应用程序中的事件语法与委托语法

我已经搜索the use of event syntax and its importance in c# code 。 所以我发现了这些优点: 无法直接分配事件(与委托语法一样,我们不承担删除所有先前订阅的风险。 没有外部用户可以发起活动 我编写此代码段是为了更了解上述几点:
3回复

c#“OR”事件委托返回bool

我在XNA中为我的游戏创建了一个控制台,并且在输入命令时有一个委托。 目前代表返回bool值。 我在Console类中声明了一个事件(返回false),然后从其他类中订阅了这个事件。 这个想法是,如果没有订阅此事件的类返回true,则假定用户输入了无效命令。 但是,如果至少有一个订阅类返
1回复

C#中的MultiCast委托

当我们使用多播委托时,仅返回最后一个方法值。 我们是否有任何实际情况需要执行所有方法,但仅应像多播委托那样返回最后一个方法值。 并且事件与多播委托之间是否有任何关系?如果是,它们如何链接? 谢谢。
1回复

使用委托/事件在c#中的一个地方处理所有子事件?

让我们假设我们有MissionA,MissionB,我们希望在任何任务开始时进行广播。 我怎样才能在c#中实现这一目标? 像下面的东西(它们在不同的.cs文件中是分开的): 一般任务(在MissionGeneral.cs中): 分任务A(在MissionA.cs中): 分任务B
3回复

为C#中的所有事件和委托创建一个catch-all处理程序

我想创建一个可用于处理任何事件或委托的处理程序。 具体来说,我希望能够编写如下代码: AddHandler是object的扩展方法,它接收事件名称和类型为Func<object[], object>的委托。 它应该能够做任何魔术来将事件(例如,在这种情况下为Event1 )绑
3回复

寻找有关C#委托和(自定义)事件的初学者示例/教程[关闭]

我正在寻找有关C#委托和自定义事件的 简单示例和教程 。 特别是我想使用自定义的事件或自己的​​事件来进行Winforms中 用户控件之间的通信,但是对于像我这样的“事件”初学者来说,我在Google上发现的示例并不容易。 在此先感谢您的帮助和建议。
10回复

如何清除C#中的事件订阅?

使用以下 C# 类: 如果有很多订阅c1的someEvent事件并且我想全部清除它们,那么实现这一目标的最佳方法是什么? 还要考虑对这个事件的订阅可能是/是 lambdas/匿名委托。 目前我的解决方案是向c1添加一个ResetSubscriptions()方法,将someEvent设置为 null
2回复

队列的入队事件在C#中

我是活动和代表的新手。 如何为Queue<T>类型的对象实现排队事件? 我正在使用 C# 和 .Net 4.0