VB中的托管如下
Delegate Sub dg_CommInput(ByVal str As String) 'form的托管申明
Public my_dg_CommRet As dg_CommInput 'form的托管实例
在C#中如何描述上面的托管呢???
Delegate Sub dg_CommInput(ByVal str As String) 'form的托管申明
Public my_dg_CommRet As dg_CommInput 'form的托管实例
在C#中如何描述上面的托管呢???
{
public Form1()
{
this.my_dg_CommRet += new dg_CommInput(method);
} private void method(string str)
{
MessageBox.Show("方法被执行");
} public dg_CommInput my_dg_CommRet;//声明一个dg_CommInput
} public delegate void dg_CommInput(string str);//定义只有一个string类型的参数,无返回值的delegate
首先利用我们比较熟悉的事件来理解托管。当我们按下某个按钮的时候,激发了这个按钮对象的单击事件,然后就要做事了,但是做什么呢,用哪个函数或者过程来做这个事情呢,就需要托管出场,托管让这个这个事件和对这个事件作出反应的函数挂钩(暂时称为托管函数)。this.btnBrowerAttachment.Click += new System.EventHandler(this.btnBrowerAttachment_Click);这个代码就是最简单常见的托管。托管delegate是个什么东西呢,它是个类。这个类只有构造函数,甚至是说只有定义,没有其他方法。不能任何函数都和某个托管挂钩,实现代理,这个体现在语法上,就是托管函数和托管类,他们要有相同的函数返回类型,相同的参数,不只是个数相同,还得是类型。这样才能实现托管。delegate如果翻译成代理呢,要比翻译成托管更加容易理解,代理就是你来代替我做某件事,当激发对象某个事件后,就由某个函数或者过程来处理。而不是对象本身来处理。就像激发按钮单击事件后,由btn_click(sender,arg)这个方法来执行处理动作。
稍微有点理解托管了呢,就可以由托管来帮助理解更加一般的事件了。
事件,是对象的事件,而处理事件的过程呢,则不是对象的责任了。托管帮助实现了对象事件的激发,和事件处理过程他们之间的挂钩。
以上是个人理解,也许说得有点不明白,也是昨天前天看了点视频,个人感觉稍微有那么点点味道了,才敢在这里抛砖引玉哈。