• 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();
  • 相关阅读:
    SpringBoot入门1
    git
    Linux 常用命令
    Linux虚拟机上安装redis
    用户登录(Material Design + Data-Binding + MVP架构模式)实现
    【方法总结】创建、读取、删除文件相关操作
    从源码角度入手实现RecyclerView的Item点击事件
    App启动页倒计时功能
    App内切换语言
    GreenDao与ReactiveX的完美搭配
  • 原文地址:https://www.cnblogs.com/sunhouzi/p/12264370.html
Copyright © 2020-2023  润新知