printDelegate()与printDelegate.Invoke()

示例代码如下:

delete void PrintDeletegate();
void Print2()
{
  //...若干行代码
}

void Main(){
  //new一个委托
  var printDeletegate = new PrintDeletegate(Print2);

  //调用委托,以下两种方式都可以
  printDeletegate();
  printDeletegate.Invoke();
}


那么printDelegate()与printDelegate.Invoke()有什么差异呢?

printDelegate()是printDelegate.Invoke()的语法糖。

编译器遇到printDelegate()时,会将它转换为printDelegate.Invoke()。

Invoke()方法是委托类型本身提供的一个方法,用于显示地调用委托所指向的方法。

另外, Invoke()方法在多线程环境下也有特殊用途:
Invoke()方法可以用在拥有该控件的线程上执行委托方法,一避免跨线程操作的异常。

posted @ 2024-12-06 09:42  青云Zeo  阅读(1)  评论(0编辑  收藏  举报