您的位置:首页 > 编程语言 > C#

C#中事件与方法的异同

2007-05-10 00:03 134 查看
首先,给出解析用的代码

...

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: