void Main()
{
// 委托 - 初级和高级的分水岭
// 1. 委托的初体验
// 委托是一个引用类型,其实是一个类型,保存方法的指针(地址) (变量名字都是地址 都是指针)
// 是一个数据类型 实际是一个对象(委托对象,函数对象,列表对象) 万物都是对象
// 指针指向一个方法 当我们调用委托的时候这个方法就立即被执行
// string int bool 可以是值类型 delegate object list 都是引用类型
// 委托是和类一个级别的
// 步骤
// 1. 声明一个委托 testDelegate
// 2. 声明要给方法 HellowDelegate
// 3. 创建委托实列 就是把 1 和 2 建立关系(1和2的参数和返回值要一致)
// 定义好委托 如何使用? new 叫做 创建委托实例
// 委托把 变量 testDelegate 和 方法 HellowDelegate 建立关系,也就是指针和别名(变量)的关系
// 此时 testDelegate 也是一个指向 方法 HellowDelegate 的指针。
//testDelegate testDe = new testDelegate((a) => { }); // a 是参数
testDelegate testDelegate = new testDelegate(HellowDelegate); // a 是参数
testDelegate("我是一个委托调用");
// 明明可以直接调用方法 HellowDelegate 为什么要使用委托这个中间商
HellowDelegate("直接调用方法,为什么还要使用委托");
// 为什么使用委托这个中间商,直接调用方法不行吗??
// 在复杂业务上,把委托当作参数处理代码,把一部分代码独立出来(把需要公共的代码业务放到委托里面去实现,让代码更加简洁)。灵活使用。
}
// 定义一个委托 ps:和类同一个级别
delegate void testDelegate(string msg);
// 定义一个方法 -- 当作委托的参数
// 必须是 static 形式的方法???
public static void HellowDelegate(string a)
{
Console.WriteLine($"test{a}");
}