• 使用委托实现了在循环中调用不同的方法


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

    首先定义了一个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
  • 相关阅读:
    js如何查看元素类型
    selenium之多线程启动grid分布式测试框架封装(四)
    selenium之多线程启动grid分布式测试框架封装(三)
    selenium之多线程启动grid分布式测试框架封装(二)
    selenium之多线程启动grid分布式测试框架封装(一)
    jmeter之自定义java请求性能测试
    jmeter之GUI运行原理
    mongodb操作之使用javaScript实现多表关联查询
    mongodb操作:利用javaScript封装db.collection.find()后可调用函数源码解读
    loadrunner必用函数web_reg_save_param获取多个符合边界值条件的使用方法
  • 原文地址:https://www.cnblogs.com/zwzw/p/2812157.html
Copyright © 2020-2023  润新知