谁能给我讲讲“委托”?最好能给个委托的例子 学习中,看书真是理解不了!!

解决方案 »

  1.   

    我举一个很简单的例子吧:)现在你有一个函数f, 希望能用另外一个名字调用他, 那么你申明一个委托d, 然后只要用一个定义语句将f托付给g, 那么以后只要定义了g的实例p, 就可以像使用f一样使用p了!编程要点,抱歉我对vb较熟悉,你不必关注下面代码的语法, 看我的注释在c#中做相应的步骤即可:1.     Private Function f(ByVal S As String) As string //此函数根据传入的参数S返回一个字符串: S+"123"
              Return S + "123"
           End Function2.    Delegate Function g(ByVal S As String) //申明一个委托,注意其参数的个数和类型应该和f一样,因为你要将f委托给他3.    //使用委托,可以在任何需要使用函数f的地方,比如窗体的Load事件里写
            Dim p As New g(AddressOf f) //p是一个实例
            MessageBox.Show(p("哈哈哈"))
    ___________________
    ok. 假设步骤3是在窗体的Load事件里写的,则打开窗口时, 将弹出一个对话框, 上书: 哈哈哈123...
      

  2.   

    Delegate 关键字不是"代理"么?
    代理跟委托有什么关系么?
      

  3.   

    我的理解
    委托就是一个函数的类型描述
    在.NET的世界是一个强类型的世界
    任何的传递中使用的都是类型数据
    比如的异步调用或者事件中用到委托
    实质上就是要求函数具有类型特征
    什么特征呢  就是所谓的函数签名
    你可以抽象的理解
    委托是一个类 它里面至少有一个函数引用
    在实例化的时候赋值  而且包含该函数的返回值以及参数类型特征
      

  4.   

    可以看一下
    http://blog.csdn.net/liyufeng1983/
      

  5.   

    楼上的达人如何学习查看IL的书籍或者网站推荐一下咯
    或者有关CLR实现原理的也可以啊
      

  6.   

    其实我也是实在想在vb中使用函数指针才查资料发现委托的.我的问题是:我有50个函数 f1,..f50, 现在我希望按述方式定义函数g:g( 某个函数的地址或名称等等, 参数2,..参数n)
    {
      根据传入的 某个函数的地址或名称等等 直接调用该函数, 而不是我人工写if等语句
    }____________________________
    然后我查了一下有关资料,发现委托好像能解决此问题, 不过......好像没有成功..请高手指点?
      

  7.   

    Delegate 关键字不是"代理"么?
    ------------------------------------------------
    delegate大部分翻译还是叫委托的,很少有叫代理,你说的委托和代理应该是一个东西委托和.net framework的事件处理机制关系很密切,委托实际上就是一个回调函数,比如响应事件、跨线程的访问窗体控件都可以用到委托。
    http://msdn2.microsoft.com/en-us/library/ms171728.aspx#codeexamplesection
    Make Thread-Safe Calls to Windows Forms Controls,一个委托的例子
      

  8.   

    http://blog.csdn.net/TomMax/archive/2004/07/15/41968.aspx原来我写过的专门针对新手的委托与事件的实例讲解教程。用现实的事情做例子。
    本来我有帖子的,不过被删除了。还好我的博客上有备份。