博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
回调函数
阅读量:6612 次
发布时间:2019-06-24

本文共 1216 字,大约阅读时间需要 4 分钟。

三、回调函数

打了这么多字,好累啊!
回调函数就是把一个方法的传给另外一个方法去执行。在C#有很多回调函数,比如异步操作的时候。这里先举个例子:

using System;

using System.Collections.Generic;
using System.Text;
namespace TestApp
{
    /// <summary>
    /// 委托
    /// </summary>
    /// <param name="s1"></param>
    /// <param name="s2"></param>
    /// <returns></returns>
    public delegate string ProcessDelegate(string s1, string s2);
    class Program
    {
        static void Main(string[] args)
        {
            /*  调用方法  */
            Test t = new Test();
            string r1 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process1));
            string r2 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process2));
            string r3 = t.Process("Text1", "Text2", new ProcessDelegate(t.Process3));
            Console.WriteLine(r1);
            Console.WriteLine(r2);
            Console.WriteLine(r3);
        }
    }
    public class Test
    {
        public string Process(string s1,string s2,ProcessDelegate process)
        {
            return process(s1, s2);
        }
        public string Process1(string s1, string s2)
        {
            return s1 + s2;
        }
        public string Process2(string s1, string s2)
        {
            return s1 + Environment.NewLine + s2;
        }
        public string Process3(string s1, string s2)
        {
            return s2 + s1;
        }
    }
}

输出结果:
Text1Text2
Text1
Text2
Text2Text1
Process方法调用了一个回调函数,当然这里只执行了回调函数。可以看出,可以把任意一个符合这个委托的方法传递进去,意思就是说这部分代码是可变的。而设计上有一个抽离出可变部分代码的原则,这种用法无疑可以用到那种场合了。

大部分转载 小部分自写

 

你可能感兴趣的文章
asp.net mvc3开发系统点滴之二
查看>>
连载-第1章绪论 1.1嵌入式系统概述
查看>>
UltraVNC
查看>>
mysql日志详细解析
查看>>
概率法计算PI
查看>>
C++标准库string类型
查看>>
Program Files 与Program Files (x86)
查看>>
Java没有源代码的同步集合~
查看>>
Lucene实战构建索引
查看>>
Js 标签云
查看>>
Netty 超时机制及心跳程序实现
查看>>
.NET平台机器学习组件-Infer.NET(三) Learner API—数据映射与序列化
查看>>
Hawk: 20分钟无编程抓取大众点评17万数据
查看>>
Codeforces Round #222 (Div. 1) C. Captains Mode 状压
查看>>
集中精力的重要性(The Importance of Focus)
查看>>
oracle中的rowid--伪列-删除表中的重复内容-实用
查看>>
Windows服务安装完成后自动启动
查看>>
(诊断)为GitHub添加SSH key时出现“Could not open a connection to your authentication agent”错误的应对方案(转)...
查看>>
在 Web 项目中应用 Apache Shiro
查看>>
Use OWIN to Self-Host ASP.NET Web API 2
查看>>