C#问题--event1+=new myDelegate(某方法)

来源:百度知道 编辑:UC知道 时间:2024/06/22 09:17:12
event1+=new myDelegate(某方法),
这个等式是否能改为event1=event1+new myDelegate(某方法),
依据是a+=5,可以改为a=a+5.

这是委托与事件的知识;
委托与事件:委托是对函数的封装,可以当作给方法的特征指定一个名称。而事件则是委托的一种特殊形式,当发生有意义的事情时,事件对象处理通知过程。 委托是一种引用方法的类型。一旦为委托分配了方法,委托将与该方法具有完全相同的行为。委托对象用关键字delegate来声明,而事件是说在发生其他类或对象关注的事情时,类或对象可通过事件通知它们。

这个操作是将 委托对象加到事件对象中;
当有委托对象执行时,会触发对应的事件发生;

与a+=5相比,虽然形式上类似,但是其意义是不一样的;
这里的“+=”是增加委托实例对象的意思,当然“-=”就是移除委托实例的意思
通俗点说就是 event1 这个事件在什么时候触发呢,只有执行了event1+=new myDelegate这条语句后,才有了执行事件的前提;将委托对象加到事件中;

故最终不能改成event1=event1+new myDelegate(某方法);

对这就是操作符重载的问题。

其实,在编程语言里面,+,-,*,/,+=等符号也是函数,只是样子特殊了点。而符号2端的量就是函数的参数。

函数重载的意思就是,函数名相同,参数不同。

+,=并没有事件这种参数,所以不能改成那样。

不可以。
因为所有事件只重载了+=和-=这两种操作符,
其他操作符没有重载,也就不能适用.

而你说的a+=5,可以改为a=a+5
这是因为int型既重载了所有+和=运算符,也重载了+=重载了运算符.
所以两种用法都可以用,并且等价.

liaoxw624 正解。