C#之委托(函数参数传递)

         在学委托这块儿的时候,函数参数这块不是很理解,于是针对一个例子做了深入的理解,和大家分享一下。

        首先,先说一下我对委托的理解,委托就是一个可以执行多种同类功能的变量,之所以它是执行同类功能的变量,是因为它只能接受一个函数,而一个函数只能执行一种类型的功能,它的作用就是提高程序的灵活性,和扩展性,比如说如果我们不用委托,可能一个函数只能执行加法运算,但是如果用了委托,它可以同时执行加减乘除,也就是说这个程序的功能扩展了,工作的灵活性也提高了。

下面是一段有关幂和乘法运算同时进行的代码:

	namespace ConsoleApplication16
	{//创建委托
	    delegate  double DoubleOp(double x);
	
	    class Program
	    {
	        static void Main(string[] args)
	        {
	          //实例化两种运算方法
	            DoubleOp[] operations =
	            {
	                new DoubleOp (MathOperations .MultiByTwo ),
	                new DoubleOp (MathOperations .Square )
	            };
	            for (int i=0;i<operations .Length ;i++)
	            {
	                Console.WriteLine("Using operations[{0}]", i);
	                // ProcessAndDisplayNumber这个函数的参数传递到此
	                ProcessAndDisplayNumber(operations[i], 3.0);
	                Console.WriteLine();
	            }
	        }
	        public static void ProcessAndDisplayNumber(DoubleOp action, double value)
	        {
	            double result = action(value);
	            Console.WriteLine("Value is {0},result of operation is {1}", value, result);
	        }
	    }
	   //两种运算方式
	    class MathOperations
	    {
	        public static double MultiByTwo(double value)
	        {
	            return value * 2;
	        }
	        public static double Square(double value)
	        {
	            return value * value;
	        }
	    }
	}
             这段代码运行之后的结果如下:

             C#之委托(函数参数传递)

             在敲代码之前,我把源码看了一遍,不是很明白,就先敲完了,让它运行,看到运行结果,感觉代码明白了,主要就是没有理清它的逻辑,所以,有时候光想不做是不行的,先做了,也许就明白了。

        

上一篇:JS生成UUID


下一篇:函数式编程与面向对象编程[1]: Lambda表达式 函数柯里化 高阶函数