摘抄:Delagate 与 event的区别
来源:互联网 发布:广州淘宝摄影工作室 编辑:程序博客网 时间:2024/05/18 12:37
·delegate定义一种签名的方式。
例:delegate void yourDelegateName(Type param1, Type param2)。 yourDelegateName仅仅是一个名字,标示这种签名方式:(Type param1, Type param2)包括返回值void。当然你也可以这样定义其它的签名:delegate int otherDelegateName(string id, string name)等等。
·event定义哪一种类型的事件。这里的类型便是指上面定义的yourDelegateName的delegate,因此,事件必须这样定义:event yourDelegateName yourEventName,这样就告诉事件接受方我这个事件的签名方式。
·事件接受方必须定义一个符合(或者说对应)yourDelegateName签名方式的方法。例如:void yourDo(Type param1,Type param2)。
·最后,事件接受方将这个方法和事件联系起来:事件产生方.yourEventName += new yourDelegateName(yourDo)。因为yourDo方法是严格按照yourDelegateName签名的,因此只要传递方法名。当yourEventName事件发生时,这个事件会自己调用你的方法(yourDo)。
·很显然,如果需要多路广播,可以这样:
事件产生方.yourEventName += new yourDelegateName(yourDo1);
事件产生方.yourEventName += new yourDelegateName(yourDo2);
...
关键是你的自定义事件是用你的自定义委托声明的,接受方的事件响应方法是符合你的自定义委托的签名方法。
-----------------------------------------------------------------------------------------------------------------------------------------------------
delegate(译为“委托”)其实就是对象方法指针,委托(delegate)根据其返回值分为两种既:一、一般委托 二、组潘委托(返回值为void),它可以通过重“+=”运算符指向多个对象方法,事件就用这种委托实现,如:
public delegate void TestDelegate();
class TData
{
private int data;
punlic event TestDelegate OnDataChange;
public int Data
{
get
{
return data;
}
set
{
if(data!=value)$$(OnDateChange!=null)
{
data=value;
OnDateChange();
}
}
}
public void PrintText()
{
System.Console.Write("Data's valus is Changed");
}
public TData()
{
OnDataChange+=new TestDelegate(PrintText);
}
}
class AppClass
{
public static void Main()
{
Tdada AppData=new Tdata();
AppData.Data=5 //data变化,触发OnDataChange 事件
}
}
程序编译后输出:
Data's value is changed
说明:
关键字event作用:1、说明这是一个事件处理过程 2、对事件委托只能进
行“+=”或“-=”操作。
- 摘抄:Delagate 与 event的区别
- event.keyCode与event.which的区别
- event.srcElement与event.target的区别
- HIBERNATE与 MYBATIS的区别(摘抄)
- event与delegate的区别
- event与delegate的区别
- delegate与event的区别
- event.getX()、event.getY()与event.getRawX()、event.getRawY()的区别
- event.currentTarget与event.target的区别介绍
- jsz中event.preventDefault()与event.stopPropagation()的区别
- ServletContext与ServletConfig的详解及区别(摘抄)
- Event中target与currentTarget的区别
- C#event 与 delegate的区别
- Android Event.getX 与getRawX的区别
- offsetLeft与style.left的区别 event.altKey、event.ctrlKey、event.shiftKey 属性 clientWidth和offsetWidth
- Event 与 Delegate的区别,还是有区别的
- ie与firefox 的区别以及event的区别
- Event delegate 的区别
- 杭州之行(续)
- java的String.split函数
- MyEclipse 中cvs详解
- Jmeter实例
- Windows环境MemCache(for Java)的简单运用
- 摘抄:Delagate 与 event的区别
- 通讯专业名词解释
- IT知识体系结构图
- Linux内核
- 点阵汉字显示
- C#生成和访问资源文件
- socket select()用法
- 新唐科技推出新一代8位单片机-N79E352
- 详解Autorun.inf