• delegate


    // 可以接受若干参数的委托
        public delegate double Method( params int[] numbers);

        public class Demo
        {


            public double Times( params int[] numbers)
            {
                double result = 1;
                foreach (int i in numbers)
                    result *= i;
                return result;
            }

            public double Div(params int[] numbers)
            {
                if (numbers == null || numbers.Length == 0)
                    throw new InvalidOperationException("参数错误");
               
                if (numbers.Length == 1)
                    return numbers[0];

                double first = numbers[0];
                int length = numbers.Length;

                for (int i = 1; i < length; i++)
                {
                    int x = numbers[i];
                    if (x == 0)
                        throw new InvalidOperationException("错误的参数");

                    first /= x;
                }

                return first;
            }
        }


        public class Calculator
        {

            public Method Times;
            public Method Div;

            public Calculator()
            {
            }

            public double MyTimes(params int[] numbers)
            {
                return this.Times(numbers);
            }

            public double MyDiv(params int[] numbers)
            {
                return this.Div(numbers);
            }

        }

        class Program
        {


            static void Main(string[] args)
            {
                // 装配
                Calculator calculator = new Calculator();

                Demo demo = new Demo();

                calculator.Times = demo.Times;
                calculator.Div = demo.Div;

                // 使用计算器
                double r = calculator.MyTimes(1, 2, 3, 4);
                Console.WriteLine(r);

                double r2 = calculator.MyDiv(12, 2, 3);
                Console.WriteLine(r2);
            }}

  • 相关阅读:
    shell脚本修改Linux系统中所有IP样例
    关闭并卸载数据库脚本
    查询编译不通过的存储过程并重新编译
    SQL函数造数据样例(一)
    类型转换和多态
    Java学习笔记(三)
    Java学习笔记二()
    Java学习笔记(一)
    1.2.零宽断言
    1.3.匹配小括号的字符(可能有小括号在一行的,也有多行的)
  • 原文地址:https://www.cnblogs.com/lovehappy/p/2168661.html
Copyright © 2020-2023  润新知