如何理解delegate使用方法

参考代码


public class BasicDelegate : MonoBehaviour
{
    public delegate void Delegate1();
    public delegate void Delegate2(int a, int b);

    void Start()
    {
        Delegate1 Dele11 = Fun1;
        Delegate2 Dele12 = Fun2;
        Delegate3 Dele2 = Fun3;
    }

   
    void Fun1()
    {
        print("This is Fun1");
    }

    void Fun2()
    {
        print("This is Fun2");
    }

    void Fun3(int a, int b)
    {
        print("This is Fun3" + (a+b));
    }
}

为方便理解,依据个人理解,作如下类比:

【关键字delegate】

一家委托公司,专门承接“委托”工作

【委托类型Delegate1();Delegate2(int a, int b)]

公司里分为不同小组,每个小组的成员负责不同参数类型、数量的工作。

Delegate1组内负责接收无参数方法的委托;

Delegate2组内负责接收两参数方法的委托

【委托Dele11;Dele12;Dele2】

Dele11、Dele12是Delegate1组内成员,负责接收Fun1()、Fun2()的委托

Dele2是Delegate2组内成员,负责接收Fun3(int a, int b)的委托

回顾代码,再次理解


public class BasicDelegate : MonoBehaviour
{
    //Delegate1 是 delegate 公司的小组,负责接收无参的委托
    public delegate void Delegate1();

    //Delegate2 是 delegate 公司的小组,负责接收两int参数的委托
    public delegate void Delegate2(int a, int b);

    void Start()
    {
        //Delegate1组分别派Dele11、Dele12对接Fun1、Fun2
        Delegate1 Dele11 = Fun1;
        Delegate2 Dele12 = Fun2;

        //Delegate2组派Dele2对接Fun3
        Delegate3 Dele2 = Fun3;

        //接受委托后,完成原函数功能
        Dele11();
        Dele12();
        Dele2(3,4);
    }

   //咱的客户
    void Fun1()
    {
        print("This is Fun1");
    }

    void Fun2()
    {
        print("This is Fun2");
    }

    void Fun3(int a, int b)
    {
        print("This is Fun3" + (a+b));
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值