当前位置:编程技术网 > 技术文章 > .net框架使用技巧 及 C#基础知识 > 文章详细内容

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);
    }

点击下载 作者|来源:原创(17fx.net)发表于:2009-1-1 17:41:34