委托和回调函数例子

其实,回调函数就是把方法当做一个参数传入其它方法中,就算直接传递方法名,那宿主方法该用什么来接收这个方法名呢?(比较绕,其实我们知道,如果参数传入"zhangsan",在宿主方法中可以用string来接收它。传入3,可以用int来接收它)。聪明的您一定想到了,传入方法,就用委托来接收它

啥都不说了,例子是最好的老师!

public delegate void OutPutMsgHandler(string name);

/// <summary>
/// 入口类
/// </summary>
class DelegateClass
{
    static void Main(string[] args)
    {
        Console.WriteLine("程序运行开始……");
        //利用多播委托
        OutPutMsgHandler callbackClass = new OutPutMsgHandler (MethodClass.EnglishGreeting);
        callbackClass += MethodClass.ChineseGreeting;
        new CallBackMethod().DoOutputMessge("zhangsan", callbackClass);
        Console.WriteLine("程序运行结束……");

        Console.ReadLine();
    }
}

public class CallBackMethod
{
    /// <summary>
    /// 回调函数,把方法作为参数传入。
    /// </summary>
    /// <param name=" name "></param>
    /// <param name="callbackMethod"></param>
    public void DoOutputMessge(string name, OutPutMsgHandler callbackMethod)
    {
        callbackMethod(name);
    }
}

/// <summary>
/// 方法类,全部为静态方法,测试调用
/// </summary>
public class MethodClass
{
    public static void EnglishGreeting(string name)
    {
        Console.WriteLine(name + "Morning");
    }

    public static void ChineseGreeting(string name)
    {
        Console.WriteLine(name + "早上好");
    }
}
时间: 2024-10-30 05:37:33

委托和回调函数例子的相关文章

Block、委托、回调函数原理剖析(在Object C语境)——这样讲还不懂,根本不可能!

开篇:要想理解Block和委托,最快的方法是搞明白“回调函数”这个概念. 做为初级选手,我们把Block.委托.回调函数,视为同一原理的三种不同名称.也就是说,现在,我们把这三个名词当成一回事.在这篇文章内,Block就是回调函数,委托也是回调函数,不再作详细的区分了.OK,Action! 那么,什么是回调函数?“回调”概念的主语是谁? 举个栗子(伪代码): 首先有个类,我们姑且称之为A类吧. A.h 文件 //声明回调函数:给指定的员工发放工资 -(void)paySalaryForStaff

一个简单的jQuery回调函数例子

jQuery回调函数简单使用 比如说,我们想要点击某个按钮后触发事件, 先把一些指定内容给隐藏掉, 然后跳出相关信息的对话框. 如果使用普通的方法, 不用回调函数的话, 会有怎么样的效果呢? 效果是先弹出对话框再隐藏内容, 然后再隐藏指定内容. 这显然不是我们想要的效果, 如果使用回调函数,就可以解决这个问题. 当然,回调函数功能远不只这么简单…… 具体的代码如下: [html] view plain copy <%@ page language="java" import=&q

关于Unity中委托与回调函数的应用

1.首先我们需要构造一个用于传输数据并承载回调函数的类 比如:(根据需要自定义构造) 1 using UnityEngine; 2 using System.Collections; 3 4 //回调函数 5 public delegate void WarningResult(); 6 public class WarningModel : MonoBehaviour 7 { 8 //回调函数 9 public WarningResult result; 10 //警告文本 11 public

React ref回调函数例子

ref属性也可以是一个回调函数而不是一个名字.   这个函数将要在组件被挂载之后立即执行. 这个参照的组件将会作为该函数的参数,这个函数可以立即使用这个组件参数,当然也可以将其保存供以后使用. 当这个参照组件被卸载并且这个ref改变的时候,先前的ref的参数值将为null.这将有效的防止了内存的泄露. <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8">

委托,匿名函数和lambda表达式

很早之前就接触到了委托,但是一直对他用的不是太多,主要是本人是菜鸟,能写的比较高级的代码确实不多,但是最近在看MSDN微软的类库的时候,发现了微软的类库好多都用到了委托,于是决定好好的研究研究,加深一下自己对他的印象,顺便把自己的感悟和想法写出来,以便自己能有更深的理解,由于本人水平有限,也欢迎大家多多探讨,有问题大家一起解决一起进步. MSDN上面对委托的定义是:delegate 是表示对具有特定参数列表和返回类型的方法的引用的类型.在我看来委托的特性主要在: 1.把一个方法当做一个参数传递给

javascript回调函数

回调函数在使用上是把一个函数当成参数传给另一个函数,在另一个函数中作为返回结果. 以下是一个简单的回调函数例子:tom到店里买东西,刚好没货了,店主问他拿了信息记录到本子上了,过几天又有货了,店主就翻本子找tom的电话,那店主找电话的过程就是一个回调函数. function outPutPhone(name) { console.log(name + "电话:10000"); } //使用回调函数的函数 function searchInfo(name, callback) { cal

动作回调函数 (CallFunc,CallFuncN,CCCallFuncND)

动作回调函数 (例子) 1 bool HelloWorld::init() 2 { 3 ////////////////////////////// 4 // 1. super init first 5 if ( !Layer::init() ) 6 { 7 return false; 8 } 9 10 Size visibleSize = Director::getInstance()->getVisibleSize(); 11 Vec2 origin = Director::getInsta

前端基本知识(四):JS的异步模式:1、回调函数;2、事件监听;3、观察者模式;4、promise对象

JavaScript语言将任务的执行模式可以分成两种:同步(Synchronous)和异步(Asychronous). “同步模式”就是一个任务完成之后,后边跟着一个任务接着执行:程序的执行顺序和排列顺序是一直的:”异步模式”则完全不同,每一个任务都有一个或者多个回调函数(callback),前一个任务结束的时候,不是执行下一个任务,二十执行回调函数,后一个任务则是不等前一个任务结束就执行,所以程序的执行顺序与任务顺序不一致的,异步的. 在浏览器端,耗时时间长的操作都应该异步执行,避免浏览器数去

C# 委托的回调机制

1.什么是回调函数 回调函数(callbackFunction),顾名思义,用于回调的函数.回调函数只是一个功能片段,由用户按照回调函数调用约定来实现的一个函数. 2.C#回调函数实现机制 ⑴定义一个回调函数: ⑵提供函数实现的一方在初始化的时候,将回调函数的实现函数委托给调用者: ⑶当特定的事件或条件发生的时候,调用者使用委托调用回调函数对事件进行处理. 3. 回调机制应用 使用回调机制,可以为工作流实现扩展. 可以把工作流中需要用户干预的,或需要提供给用户的数据以回调的模式提供给用户.而用户