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}"); }
标签:委托,HellowDelegate,delegate,使用,dotnet,方法,testDelegate,指针 From: https://www.cnblogs.com/zhulongxu/p/18172550