using System;
namespace YhTest1
{
public delegate void GreetDelegate(string name);
class Program
{
private static void English(string name)
{
Console.WriteLine("Hello!" + name);
}
private static void Chinse(string name)
{
Console.WriteLine("你好!" + name);
}
private static void GreetPeople(string name, GreetDelegate greetDelegate)
{
greetDelegate(name);
}
static void Main(string[] args)
{
GreetDelegate test1;
test1 = English;
GreetPeople("lihua", test1);
test1 = null;
test1?.Invoke("lihua");
test1 = Chinse;
GreetPeople("梨花", test1);
Console.WriteLine("Ending.........");
}
}
}
解释就是:
判断一下这个委托是不是为null;如果是则不执行委托,如果不是则执行该委托;
invoke和begininvoke的区别
invoke:在拥有此空间基础窗口句柄的线程上执行指定的委托
begininvoke:在创建控件的基础句柄所在的线程上异步执行指定的委托
————————————————
版权声明:本文为CSDN博主「xianyunxiaohe」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xianyunxiaohe/article/details/90053053