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
...
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
相关文章推荐
- C#学习之初步理解委托、事件、匿名方法和Lambda
- C# 委托 事件 匿名方法
- c#写button的click事件的方法,内部类与独立类,winform和xamarin都可以用
- c#禁止窗口关闭方法(重写关闭事件)
- 2011-12-20 C#拖放技术相关方法和事件
- C#事件-自定义事件的使用方法
- [C#] WinForm中按钮响应回车事件的简单方法
- C# 自定义事件并使用自定义事件参数方法
- c# 事件方法与窗口或控件的绑定
- C# 中的动态创建组件(属性及事件)的实现思路及方法
- C#事件及响应方法
- C#事件及响应方法
- C#WinForm中按钮响应回车事件的简单方法
- C#解惑2——Delegate,Action,Func,匿名方法,匿名委托,事件(转)
- C#WinForm中按钮响应回车事件的简单方法(转)
- C#中事件方法的使用
- C#模块间事件处理方法
- 【C#】往异步下载的方法传递自定义完成事件
- C#窗体间通讯的几种处理方法(事件)