• C#委托与回调的应用体会(二)


    上一次说了C#的委托算法,这次应用到的是回调算法。感觉C#编程委托与回调的结合比较常见。

    回调函数就是把一个方法的传给另外一个方法去执行。在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方法调用了一个回调函数,当然这里只执行了回调函数。可以看出,可以把任意一个符合这个委托的方法传递进去,意思就是说这部分代码是可变的。而设计上有一个抽离出可变部分代码的原则,这种用法无疑可以用到那种场合了。

  • 相关阅读:
    【笔记】关于全栈开发、技术发展方向,软件开发模式的思考
    转 mysql 自动安装部署
    转shell不能执行su 后的脚本
    11.2 rman 备份 放在DG 库上跑,可能遇到的问题。
    highchart 学习
    每周定时备份linux 文件内容 到 远端主机
    转 javascript 本地时间 和utc 节点 和 时间戳转换 的
    转 钢铁侠的云之舞~多租户,Docker,虚拟机 , 你怎么选?
    转 perl 的调试
    转 pt-query-digest 使用实例
  • 原文地址:https://www.cnblogs.com/fly0512/p/9784542.html
Copyright © 2020-2023  润新知