【初级】这种使用方法叫什么?
//这是三段位置不在一起的代码
public delegate void MyInvoke(string str1,string str2);
//这个东西叫代理函数,最近有了解
MyInvoke mi = new MyInvoke(UpdateForm);
//我想知道这是什么使用方法?有点像指针类型的函数,但是看上去又不像?
public void UpdateForm(string param1,string parm2)
{
this.textBox1.Text = param1+parm2;
}
求助MyInvoke是一个函数指针还是个类?怎么理解第二句话?
------解决方案--------------------1 是个类,绝对的。
2 第二句就是建个对象而已
------解决方案--------------------就是一种特殊定义类型的方式
class A
{
} //定义类型A
delegate void MyInvoke(int a,int b); //定义类型MyInvoke
定义一个类型 不仅仅使用 class struct enum 之类的。。。
------解决方案--------------------呵呵 明显的 委托
在委托方法里面 判断
InvokeRequired
public void UpdateForm(string param1,string parm2)
{
if(this.textBox1.InvokeRequired)
this.Invoke(mi,param1,parm2);
else
this.textBox1.Text = param1+parm2;
}
这样就完善一点了
------解决方案--------------------委托可以理解成函数指针,它的定义就是一个函数的签名, 第二句是Delegate的赋值方式,建议你这种概念性的东西还是上msdn看专业的解释. http://msdn.microsoft.com/en-us/library/ms173171(v=vs.90).aspx
------解决方案--------------------public delegate void MyInvoke(string str1,string str2);
//我本来以为delegate和public这种标志是类似的,查MSDN才知道原来delegate是个抽象类
的确有个delegate的类, 但这里delegate是一个关键词
http://msdn.microsoft.com/zh-cn/library/system.delegate(v=vs.90).aspx
Delegate 类是委托类型的基类。然而,只有系统和编译器可以显式地从 Delegate 类或 MulticastDelegate 类派生。
大多数语言实现 delegate 关键字,这些语言的编译器能够从 MulticastDelegate 类进行派生;所以,用户应当使用语言所提供的 delegate 关键字。
这里有一个编译器的概念~ 相当于翻译者~ 把你写好的代码翻译一下~ 翻译后意思差不多~ 但形式上会变
编译器会把
public delegate void MyInvoke(string str1,string str2);
可能编译成 MyInvoke 继承 MulticastDelegate : Delegate ;好了,暂时不纠结编译器编译后的样子