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

  • 相关阅读:
    Hibernate hql查询
    Hibernate Criteria的方法
    Hibernate笔记:HQL查询总结(二)——条件查询
    级联查询
    Hibernate HQL查询 总结
    JavaScript声明全局变量三种方式的异同
    javascript变量注意事项
    Hibernate的QBC检索方式
    C# 串口编程 SerialPort
    SPBasePermissions Modify Permission Levels (using bitwise operators)
  • 原文地址:https://www.cnblogs.com/fly0512/p/9784542.html
Copyright © 2011-2022 走看看