声明定义一个这样的委托private delegate void DelegateTest(string msg);
然后有这样一个方法
public void Message(string msg)
{
}那么我有个问题
DelegateTest test=Message;和DelegateTest test=new DelegateTest(Message)有什么区别吗?

解决方案 »

  1.   

    没区别,前者是.net2引入的语法糖
      

  2.   

    2、委托实例化的过程,也就是委托对象构造的过程,从底层来讲,即将一个现存的函数代码指令块的内存地址(静态函数,实例的非静态成员函数都行)赋值给这个委托;这个赋值过程,就是委托的构造函数要做的事情,所以,委托的构造函数一定有一个参数,这个参数在后台让系统处理,就是满足类型检查的函数指针,所要检查的类型(返回值,参数类型,参数个数)都是在声明定义委托的时候给出的。3、委托实例化的两种方法:    1) A a = new A(静态方法名/实例.方法名);    2) A a = 静态方法名/实例.方法名;    委托调用的两种方法:    1)a.Invoke()    2)a()用来构造委托的方法可以是静态方法,也可以是实例化对象的成员函数,本质是这段代码指令已经编译出来,分配了内存了,传递给委托的参数(本质就是这块指令数据的首地址)是有效的有意义的,从这个角度来理解,自然静态方法,实例方法都能用来构造、建立委托实例的了