C#:理解事件语法

C#:理解事件语法,第1张

概述我需要一些帮助,了解如何创建一个新的自定义事件.我从 here读… public delegate void ChangingHandler (object sender, CarArgs ca); public event ChangingHandler Change; ...private void car_Change(object sender, CarArgs ca) { 我需要一些帮助,了解如何创建一个新的自定义事件.我从 here读…
public delegate voID ChangingHandler (object sender,Carargs ca); public event ChangingHandler Change; ...private voID car_Change(object sender,Carargs ca) {    MessageBox.Show(ca.Message());} ...car.Change+=new Car.ChangingHandler(car_Change); // add event handler...Change(this,ca); // call event

1,我真的没有得到代表的一部分.在正常的变量声明中,

protected string str1;

但在这里我有额外的(ChangingHandler).我怎么理解这个?我知道像ChangingHandler这样的东西会被用来处理这个事件,但它会让我失望.

public event ChangingHandler Change

然后

car.Change+=new Car.ChangingHandler(car_Change)

我真的没有得到新的Car.ChangingHandler(car_Change)语法.

解决方法 C#中的事件有点像方法指针的集合.它说“嘿大家,如果你关心我,给我一个指向我可以调用的方法的指针,我会坚持下去,当我想向世界宣布什么是什么时,我会调用所有的方法你给我.”

这样,有人可以给事件指向他们的方法,这被称为“事件处理程序”.只要事件所有者认为合适,事件就会调用此方法.

从这个意义上说,代表只不过是说这个事件会接受什么样的方法.你不能让一个人给这个事件一个不带参数的方法,一个拿5个的方法,它不知道如何调用它们.因此委托是事件和事件处理程序之间的契约,告诉他们对方法签名的期望.

在您的情况下,最好只使用EventHandler< T>,它是您的事件委托的voID EventHandler< T>(对象发送者,T eventArgs)形式的内置委托,如下所示:

public event EventHandler<Carargs> Change;

C#实际上没有原始意义上的函数指针.代表们处理这个问题.它们就像强类型,面向对象的函数指针.你打电话的时候

car.Change+=new Car.ChangingHandler(car_Change);

您正在为事件提供一个新的委托(函数指针),该委托指向您的car_Change事件处理程序,告诉事件在准备好时调用您的car_Change方法.委托(new ChangeHandler(…)只是将指针包装到car_Change方法.

总结

以上是内存溢出为你收集整理的C#:理解事件语法全部内容,希望文章能够帮你解决C#:理解事件语法所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1242001.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存