C#中的委托和事件机制
谈到这个委托,很多熟悉C/C++的朋友, 都会想起函数指针,说起来真是有几分相同,但是还是有些区别的。下面是大家熟悉的一点资料:
委托: 方法的引用(方法的“地址”)[delegate/委托/代理/指代]
委托的作用: 能将方法的“地址”取出来, 然后可以传递
使用委托步骤
1、定义委托类型
[访] delegate [返回值类型] 委托类型名(参数表);
//约定 此 委托类型 的委托对象可以引用 指定 参数表
// 指定返回值的方法。
2、定义委托对象 且实例化
委托类型名 委托对象名 = new 委托类型名( 方法 );
//真实的发生 委托对象 对 方法的引用。
3、调用委托
委托名(参数);
委托的运用
1、回调
2、事件
事件: 特殊的委托对象、加了event的委托。
1、定义事件
a、定义委托类型
b、在事件源对象内部定义事件
public event 委托类型名 事件名;
2、在调用控件的代码中 订阅事件
事件源对象.事件名 += new 委托类型名(事件处理方法);
3、在事件源对象内部 引发事件 (调委托)
事件名(参数);
最后想弄2个例子给大家, 但是只在电脑上找到一个asp.net里面自定义事件的代码。给大家参考参考吧。 winform中也和这个完全一样。
//1、定义事件 a、定义委托类型
public delegate void SearchHander(object sender, SearchArgs e);
//1、定义事件 b、在事件源对象内部定义事件
public event SearchHander Search;
//2、在调用控件的代码中 订阅事件
this.UcSearch1.Search += new SearchHander(UcSearch1_Search);
if (Search != null)
{
SearchArgs arg = new SearchArgs();
arg.KeyWord = this.TextBox1.Text;
//3、在事件源对象内部 引发事件 (调委托)
Search(this, arg);
}