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
这篇博客介绍了C#中的委托和事件,特别是`invoke`和`begininvoke`的用法和区别。`invoke`确保在拥有该委托引用的线程上同步执行方法,而`begininvoke`则用于异步调用,允许在创建控件的线程上异步执行。示例代码展示了如何使用这两种方法调用委托。
251

被折叠的 条评论
为什么被折叠?



