我举一个很简单的例子吧:)现在你有一个函数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...
Delegate 关键字不是"代理"么? ------------------------------------------------ delegate大部分翻译还是叫委托的,很少有叫代理,你说的委托和代理应该是一个东西委托和.net framework的事件处理机制关系很密切,委托实际上就是一个回调函数,比如响应事件、跨线程的访问窗体控件都可以用到委托。 http://msdn2.microsoft.com/en-us/library/ms171728.aspx#codeexamplesection Make Thread-Safe Calls to Windows Forms Controls,一个委托的例子
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...
代理跟委托有什么关系么?
委托就是一个函数的类型描述
在.NET的世界是一个强类型的世界
任何的传递中使用的都是类型数据
比如的异步调用或者事件中用到委托
实质上就是要求函数具有类型特征
什么特征呢 就是所谓的函数签名
你可以抽象的理解
委托是一个类 它里面至少有一个函数引用
在实例化的时候赋值 而且包含该函数的返回值以及参数类型特征
http://blog.csdn.net/liyufeng1983/
或者有关CLR实现原理的也可以啊
{
根据传入的 某个函数的地址或名称等等 直接调用该函数, 而不是我人工写if等语句
}____________________________
然后我查了一下有关资料,发现委托好像能解决此问题, 不过......好像没有成功..请高手指点?
------------------------------------------------
delegate大部分翻译还是叫委托的,很少有叫代理,你说的委托和代理应该是一个东西委托和.net framework的事件处理机制关系很密切,委托实际上就是一个回调函数,比如响应事件、跨线程的访问窗体控件都可以用到委托。
http://msdn2.microsoft.com/en-us/library/ms171728.aspx#codeexamplesection
Make Thread-Safe Calls to Windows Forms Controls,一个委托的例子
本来我有帖子的,不过被删除了。还好我的博客上有备份。