C# 学习笔记:委托(2)

上篇文章我们讲了委托的父类和多播委托,这篇博客来讲讲委托的回调(Callback)。

其实我一直不明白CallBack啥意思,就回调方法。

回调方法的具体解释是把方法当做一个参数传入其它方法中,C#代码中,我们可以使用委托实例来包装方法。

比如说,我写了个Game类,朋友写了个Load类,他需要我的值来判定登录的是哪个游戏,我这边需要把一个函数的返回值传给他里面,他就需要写一个回调函数来接受我的函数的返回值。

首先我先定义一个委托来包装我需要的函数,它返回一个int:

    public delegate int PlayGame(string a);

我写的Game是这样的:

    class Game
    {
        private string UserName;
        public Game(string userName)
        {
            UserName = userName;
        }
        public int GameStart(string Gamename)
        {
            Console.WriteLine(UserName + "登录" + Gamename);
            if(Gamename=="彩虹六号")
            {
                return 11;
            }
            else if(Gamename=="神界原罪")
            {
                return 22;
            }
            else
            {
                return 0;
            }
            
        }
    }

他写的Load类需要知道我们的GameCode是多少,此时就用到了GamePlay委托来包装我们的函数参数:

    class Load
    {
        private int GameCode;
        public Load(string name,PlayGame play)
        {
            GameCode = play.Invoke(name);
            if (GameCode == 11)
            {
                Console.WriteLine("我知道了,你玩的是彩虹六号");
            }
            else if (GameCode == 22) 
            {
                Console.WriteLine("我知道了,你玩的是神界原罪");
            }
            else
            {
                Console.WriteLine("你玩的是个啥??");
            }
        }
        }
    }

主函数里直接调用就好了:

    class Program
    {
        static void Main(string[] args)
        {
            Game game = new Game("熊思远");
            PlayGame play = new PlayGame(game.GameStart);
       
            Console.WriteLine("你玩的是哪个游戏啊");
            string GameName = Console.ReadLine();
            Load load = new Load(GameName,play);
        }
    }

这样的话,我们就把我们需要的的函数给到了我的朋友,他就知道我们打开的是哪个游戏,而且跟我们的耦合比较低。

这样,我就能传给朋友我玩的是哪个游戏了,他也能根据规则很好地判断出来:

这样就实现了回调,就是函数作为参数给我的朋友,这样啊的话我们的函数逻辑执行了我们要的函数,而且还传递了参数给我们的朋友。

委托回调:即我朋友的的处理中有一部分处理过程其实需要你来实现,需要你传一个“方法参数”给它。这就是委托回调的意义。

完整的委托回调的定义即:把委托类型的参数传入主调方法里面去,主调函数内部逻辑来表示我是否会调用这样一个委托里的方法,这样代码就像流水线一样运行。主调方法里的回调方法委托参数一般用于主调方法逻辑的末尾之处,且没有返回值。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值