流浪のwolf

卷帝

导航

dotnet 委托delegate的使用 定义和使用

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}");
}

 

posted on 2024-05-04 18:30  流浪のwolf  阅读(3)  评论(0编辑  收藏  举报