栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【回调函数】

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【回调函数】

    在接触完C#的基础部分之后,开始了解进阶部分的时候就会遇到一些不理解的名词——回调函数。

微软官方解释:

     回调函数是托管应用程序中的代码,可帮助非托管 DLL 函数完成一项任务。 对回调函数的调用间接从托管应用程序中进行传递、经过 DLL 函数,再回到托管实现。 一些通过平台调用的 DLL 函数需要托管代码中的回调函数才能正常运行。

若要从托管代码中调用大部分 DLL 函数,则可以创建函数的托管定义,然后再调用它。 此过程相当简单。

使用需要回调函数的 DLL 函数还有一些其他步骤。 首先,必须通过查看函数的文档来确定该函数是否需要回调。 然后,需要在托管应用程序中创建回调函数。 最后,调用 DLL 函数,将指针作为一个参数传递给回调函数。

 回调函数非常适合用于需要重复执行一项任务的情况。

翻译:回调函数就是通过声明方法委托,将委托作为方法参数进行传递,在调用时只需要传递实际使用的方法进行调用即可,简而概之就是将将方法作为参数给另外一个方法调用,而这其中的过程就是通过函数指针调用的函数,当一个函数的指针(地址)作为参数传递给另一个函数,当这个指针指向的函数就是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用,用于对事件或条件的响应,降低程序耦合性。

代码解释:

    //用户层
    class UserClass
    {
        static void Main(string[] args)
        {
            BaseClass baseClass = new BaseClass();
            DevolperClass devolper = new DevolperClass();
            //传参使用
            baseClass.AddCaculate(1, 1, devolper.GetSum);
            baseClass.AddCaculate(1, 10, devolper.GetMulit);
            Console.ReadKey();
        }         
    }
    //专业人员方法开发层
    public  class DevolperClass
    {      
        public int GetSum(int a, int b)
        {
            Console.WriteLine("使用了开发层方法结果为{0}", a + b);
            return a + b;
        }
        public int GetMulit(int a, int b)
        {
            Console.WriteLine("使用了开发层方法结果为{0}", a * b);
            return a * b;
        }
    }
    //系统底层
    public  class BaseClass
    {
        public delegate int CalSum(int a, int b);
        public int AddCaculate(int a, int b, CalSum cal)
        {
            Console.WriteLine("使用了系统底层方法");
            return cal(a, b);
        }
    }

示意图:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1008971.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号