• C#之委托(函数参数传递)【转】


    原文:http://blog.csdn.net/wangdan199112/article/details/18796527

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

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

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

    [csharp] view plain copy
     
     在CODE上查看代码片派生到我的代码片
    1. <span style="font-size:18px;">  namespace ConsoleApplication16  
    2.     {//创建委托  
    3.         delegate  double DoubleOp(double x);  
    4.       
    5.         class Program  
    6.         {  
    7.             static void Main(string[] args)  
    8.             {  
    9.               //实例化两种运算方法  
    10.                 DoubleOp[] operations =  
    11.                 {  
    12.                     new DoubleOp (MathOperations .MultiByTwo ),  
    13.                     new DoubleOp (MathOperations .Square )  
    14.                 };  
    15.                 for (int i=0;i<operations .Length ;i++)  
    16.                 {  
    17.                     Console.WriteLine("Using operations[{0}]", i);  
    18.                     // ProcessAndDisplayNumber这个函数的参数传递到此  
    19.                     ProcessAndDisplayNumber(operations[i], 3.0);  
    20.                     Console.WriteLine();  
    21.                 }  
    22.             }  
    23.             public static void ProcessAndDisplayNumber(DoubleOp action, double value)  
    24.             {  
    25.                 double result = action(value);  
    26.                 Console.WriteLine("Value is {0},result of operation is {1}", value, result);  
    27.             }  
    28.         }  
    29.        //两种运算方式  
    30.         class MathOperations  
    31.         {  
    32.             public static double MultiByTwo(double value)  
    33.             {  
    34.                 return value * 2;  
    35.             }  
    36.             public static double Square(double value)  
    37.             {  
    38.                 return value * value;  
    39.             }  
    40.         }  
    41.     }  
    42. </span>  

                 这段代码运行之后的结果如下:

                 

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

  • 相关阅读:
    百度地图API(二)
    Android开发--页面切换
    Android开发--Socket通信
    android开发--okhttp
    android开发--下载图片
    Android--Handler
    android开发--多线程
    android开发--Application
    android开发--ormlite
    android开发--数据库(更新或者降低版本)
  • 原文地址:https://www.cnblogs.com/hwl1023/p/6271083.html
Copyright © 2020-2023  润新知