• C# 委托基本知识


    委托简介

    • 委托是一种数据类型,像类一样的数据类型,一般直接在命名空间中定义
    • 定义委托时,使用关键字delegate,需要指定返回值类型、委托名称、参数列表

    委托的使用

    • 声明委托变量并赋值
    • 委托是一个引用类型,可以为null,所以使用时候尽量先做非空验证
    • 委托类型的变量只能赋值一个委托类型的对象(方法)

    委托应用范围

    • 在程序中,有一段代码需要根据引用者不同而做出不同的判断,有时候我们会用 if 判断做这个需求,但是 if 判断是需要知道值的范围才能做出判断,万一要是都不知道调用者会穿什么值进来怎么办,这时候就可以使用委托,让调用者自己决定这段代码写什么,怎么写

    实际应用

    定义委托

    // 定义一个无参数无返回值的委托
    delegate void MyDelegate();
    // 定义一个有参数无返回值的委托
    delegate void MyDelegate1(string msg);
    // 定义一个无参数有返回值的委托
    delegate string MyDelegate2();
    // 定义一个有参数有返回值的委托
    delegate string MyDelegate3(string msg);

    定义委托

    // 定义无参数无返回值的委托变量 将一个无参数无返回值的方法赋值给委托
    MyDelegate m1 = new MyDelegate(Method);
    // 使用以上方式和使用以下方式相同
    MyDelegate m2 = Method; 
    // 定义一个有参数有返回值的委托变量,将一个有参数有返回值的方法赋值给委托
    MyDelegate3 m3 = Method1;
    // 定义无参数无返回值的委托变量 将一个无参数无返回值的匿名函数赋值给委托
    MyDelegate m4 = delegate()
    {
        Console.WriteLine("无参数无返回值的匿名函数");
    };
    // 定义一个有返回值的委托变量 将一个有参数有返回值的匿名函数赋值给委托
    MyDelegate3 m5 = delegate(string msg)
    {
        return "有参数有返回值的匿名函数" + msg; 
    
    };
    // 定义一个无参数无返回值的委托变量 将一个无参数无返回值的lambda表达式赋值给委托
    MyDelegate m6 = () =>
    {
        Console.WriteLine("无参数无返回值的lambda表达式");
    
    };
    // 定义一个有参数有返回值的委托变量 将一个有参数有返回值的lambda表达式赋值给变量
    MyDelegate3 m7 = (msg) =>
    {
        return "有参数有返回值的lambda表达式";
    
    };

    定义委托中使用到的方法

    static void Method()
    {
        Console.WriteLine("无参数无返回值的方法");
    }
    
    static string Method1(string msg)
    {
        return "有参数有返回值的方法:" + msg;
    }

    调用委托

    // 调用委托
    m1();
    // 使用以下方式和上面的调用方式相同
    m1.Invoke();
  • 相关阅读:
    grafana调试查询指标数据
    crontab 误删除恢复
    在MySQL中实现Rank高级排名函数
    shell脚本变量替换
    Mysql 与 Oracle的区别
    shell脚本对字符串变量取值的处理
    【Slick SQL】如何将列表参数传递到in中
    安装VUE调试工具VUEDEVTOOLS
    【Ambari Hive】设置命令行set白名单
    查看Oracle的表结构
  • 原文地址:https://www.cnblogs.com/sunhouzi/p/12264370.html
Copyright © 2020-2023  润新知