• C#中的委托是什么


    1.什么是委托?(方法作另一个方法的参数)
    delegate void MyDel(int value);    //声明委托类型
    和类一样,委托是用户自定义的类型,但是类是数据和方法的集合,而委托是持有一个或多个方法。
    delegate可以看做是一个包含有序方法列表的对象,这些方法具有相同的签名和返回类型。
    委托保存的方法可以来自任何类或结构
    调用列表中的方法可以是实例方法也可以是静态方法
    调用委托时,会执行调用列表中的所有方法


    2.声明委托类型
    delegate    void      MyDel        (int value);委托的是无返回值,且单一int参数的方法
    关键字    返回类型    委托类签名      签名

    3.创建委托对象
    MyDel       delVar;
    委托类型     变量
    delVar = new MyDel(myInstObj.MyM1);    或    delVar = myInstObj.MyM1;
    delVar = new MyDel(sClass.otherM2);    或    delVar = sClass.otherM2;

    4.组合委托
    MyDel a = myInstObj.myM1;
    MyDel b = SClass.OtherM2;
    MyDel c = a + b;

    5.为委托添加方法+=  同理删除方法: -=
    MyDel delVar = inst.myM1;    //创建并初始化
    delVar += Scl.m3;
    delVar += X.Act;

    6.调用委托(从底部函数开始执行)
    MyDel delVar = inst.MyM1;
    delVar(55);

    7.调用带返回值的委托
    最后一个方法的返回值就是委托调用返回的值,其他方法的返回值会被忽略

    8.调用带引用参数的委托
    参数值会根据调用列表中的一个或多个方法的返回值而改变

    9.匿名方法
    在初始化委托时内联声明的方法
    delegate   (Parameters)    {ImplementationCode}
    关键字      参数列表        语句块
    delegate int OtherDel(int Inparam);
    static void Main()
    {
        OtherDel del = delegate(int x)
        {
            return x + 20;
        };
    }

    如果你只是写了一个bai委托去调用du方法,那是看不出区别。
    区别在用事件的时zhi候,dao委托一般和事件组合使用,委托不关心方法所在的类,用事件(也是一种特殊的委托)调用方法的时候,是从类内自动触发的执行的,如果用方法直接执行是没办法做到的。

  • 相关阅读:
    Linux的网络配置
    Linux进程
    我需要的电脑配置
    spring注解配置
    spring中集合的配置
    getProperty()方法的参数和用途
    树的遍历
    单词变换
    最短路径dijkstra算法
    文件路径
  • 原文地址:https://www.cnblogs.com/deepalley/p/12725660.html
Copyright © 2020-2023  润新知