zoukankan      html  css  js  c++  java
  • 使用委托实现了在循环中调用不同的方法

    今天晚上感觉到精力充沛,所以看看了书,随便翻开看到了一个关于委托了小例子,在这里拿出来跟大家分享一下。

    首先定义了一个MathOperations类,该类里面有两个静态方法(定义成静态的方便后面调用),方法真的简单的过分,我就不解释了,上代码吧:

        class MathOperations
        {
            public static double MultiplyByTwo(double value)
            {
                return value * 2;
            }
    
            public static double Square(double value)
            {
                return value * value;
            }
        }

    简单吧!

    下面定义调用方法:

        delegate double DoubleOp(double x);
    
        class Program
        {
            static void Main(string[] args)
            {
                DoubleOp[] operations =
                {
                    MathOperations.MultiplyByTwo,
                    MathOperations.Square
                };
                for (int i = 0; i < operations.Length; i++)
                {
                    Console.WriteLine("Using Operations[{0}]:", i);
                    ProcessAndDisplayNumber(operations[i], 2.0);
                    ProcessAndDisplayNumber(operations[i], 7.94);
                    ProcessAndDisplayNumber(operations[i], 1.414);
                    Console.WriteLine(Environment.NewLine);
                }
                Console.ReadKey();
            }
    
            static void ProcessAndDisplayNumber(DoubleOp action, double value)
            {
                double result = action(value);
                Console.WriteLine("Value is {0},result of operation is {1}", value, result);
            }
        }

    既然要用委托来实现,那么一定要定义一个委托咯,代码如上。

    在这段代码中,实例化了一个委托数组DoubleOp(温馨提示:一旦定义了委托,基本就可以实例化它了,那么就可以像处理类那样,使用该委托了,所以这里把一些委托的实例放到数组中是可以的)。数组被初始化为由MathsOperations类实现的不同操作。然后遍历该数组,把每个操作应用到3个不同的值上,这恰好说明了委托的一种方式:把方法组合到一个数组中来使用,这样就实现了在循环中调用不同的方法了。

    这段代码的关键一行是把每一委托传递给了ProcessAndDisplayNumber()方法, 例如:

     ProcessAndDisplayNumber(operations[i], 2.0);

    这里“operations[i]”,如果i=0的话,可以使用operations[0](2.0),直接调用MultiplyByTwo(2.0)该方法。

    ProcessAndDisplayNumber()方法定义了把一个委托作为一个参数,

    然后调用时:

    double result=action(value);

    总结:委托的用法跟类是一样一样的,唯一的区别是委托是指向方法的引用,把方法当作参数进行传递,而实现的方法可以自定义。

    对WPF感兴趣的朋友可以直接跟我联系
    我个人QQ:1791786556
    讨论QQ群:
    WPF学习交流:699150554
    WPF/UI 界面开发:527847154
    WPF控件编程:699191787
  • 相关阅读:
    Linux使用locate命令定位文件
    LINUX常用命令
    linux性能问题(CPU,内存,磁盘I/O,网络)
    Linux下常用的shell命令记录
    Linux下的进程管理
    Linux常用性能检测命令解释
    CentOS查看系统信息-CentOS查看命令
    linux系统中如何查看日志 (常用命令)
    美团HD(4)-二级联动效果
    美团HD(3)-加载分类导航数据
  • 原文地址:https://www.cnblogs.com/zwzw/p/2812157.html
Copyright © 2011-2022 走看看