读书人

【低级】这种使用方法叫什么

发布时间: 2013-09-26 10:32:34 作者: rapoo

【初级】这种使用方法叫什么?


[解决办法]
就是一种特殊定义类型的方式

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 ;好了,暂时不纠结编译器编译后的样子



//按上面说的话,我们不能自己写代码MyInvoke 继承 MulticastDelegate : Delegate

public delegate void MyInvoke(string str1,string str2);
我们来分解这句话的语法好了~
public 访问级别 public
delegate 声明是要定义一个委托,定义委托的类型就是后面的函数签名
void MyInvoke(string str1,string str2); 函数签名

前面的public delegate有点固定
后面的函数前面是我们定义的关键~
有点像我们定义类
public class //在没有显示声明是,继承Object
[...我们可以定义的...]

public delegate //不能显示继承谁,强制默认继承MulticastDelegate:Delegate ... ....
[...我们可以定义的...]

记住我前面说的 内容和形式~
[解决办法]
其实MSDN阐述的一清二楚

对于C#:
具体参见:delegate (C# Reference)

对于.netFrameWork:
具体参见:Delegate Class

delegate,class,inteface都是引用类型
Delegate类,是delegate类型的基类

读书人网 >C#

热点推荐