C#中事件与方法的异同

 首先,给出解析用的代码

...

void M(){}

...

event EventHandler E;

virtual void OnE(EventArgs e)

{if(E!=null){this.E(this,e)}}

对于某一个流程S:

...

if (K>0)

{...}

else

{M();}

这与如下的改动S有什么不同

if(K>0)

{...}

else

{OnE(new EventArgs());}

//为区别起见称些改动后的流程为S'

S'是否可能存在不能够被S代替的可能性..如果事件是有某种特别的意义的.那么应该不是那么容易被代替的对于S来说,只要确定一个条件,K>0不为真那么M方法将被执行,而同样情况下在S'中则是E事件被触发,这好象区别不大设拥有事件E和M的对象是Obj_1,而拥有Obj_1是另一个对象设为Obj_2,那么Obj_1.M可以确定的被Obj_2调用(假设M为公有的,E也是),这时如果S属于Obj_2那么这将是一种很正常和标准的设计,当然S也可以属于Obj_1本身其作用与M一致也就是说S属于Obj_1 时仍然是Obj_1中的一个方法,但是通常S'不属于Obj_2而只能属于Obj_1这就说明,对于事件来说,只要是满足,那些可确定的S'但无法确定的方法体时,即为事件,这对于面向对象的分析来说显得更贴切于,实际的问题域了,让设计的困难程度降低了而且增加了灵活性.大概这种是事件与方法的不同之处吧.

6:26 2001-1-1
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值