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>  

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

             C#之委托(函数参数传递)【转】第3张

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

免责声明:文章转载自《C#之委托(函数参数传递)【转】》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇CCFlow新版本的自由流程、自定义流程功能说明ThinkPad T41/43 安装Windows XP及其驱动程序下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

随便看看

VS中,如何将存在于解决方案里,但是没有显示出来的文件(或文件夹)显示到项目中。

不知道有没有人跟我一样,刚开始接触VS的时候,没有通过“右键-˃添加”产生文件,而是直接一些文件或者文件夹建在了项目的本地目录中。导致最后这些文件无法在项目中显示。其实方法很简单如图“Test”文件夹下有一个“Test2”没有显示出来。点击工具栏“显示所有文件”这时就发现之前没有显示的文件就都显示出来了。在想要显示的文件上点击右键,然后点击“包括在项目中”完...

微信扫码网页登录,redirect_uri参数错误解决方法

对于微信开放平台[管理中心/应用程序详细信息]中设置的[开发信息][授权回调域],只需填写域名,无需https://,也无需特定页面。您不需要填写完整的请求路径,如图所示:https://open.weixin.qq.com/connect/qrconnect?appid=您的APPID&direct_Uri=回调和响应的特定地址_type=code...

mini.DataGrid使用说明

√√√ ajaxOptionsObjectajax配置对象。√√√ idFieldString是行数据的唯一字段。设置为“client”之后,客户端将排序√√√√ totalCountNumber记录总数√√√ defaultColumnWidthNumber默认列宽100√√√√ showColumnsBoolean显示标头true√√√√ showPag...

EwoMail 开源邮件服务器安装教程

本教程示例中使用的主要域名是ewomail.cn。设置主机名EwoMail将在安装后默认使用带有域名前缀mail的主机名。例如,mail.ewomail。cn将系统主机名更改为mail.ewomail.cn。查看当前主机名hostname-f修改主机名,修改文件/etc/sysconfig/network修改文件/etc/hosts,添加mail.ewoma...

IntelliJ idea设置显示错误代码提示

idea默认关闭自动编译,所以一些编译错误只有在编译的时候才会提示,例如修改了引用类。按图中设置打开自动编译:注意:idea默认打开省电模式,自动编译在省电模式下被禁用,所以需要在file˃powersavemode关闭省电模式。...

nginx重启

方法二:在启动命令-c前加-t2、重启Nginx服务方法一:进入nginx可执行目录sbin下,输入命令./nginx-sreload即可方法二:查找当前nginx进程号,然后输入命令:kill-HUP进程号实现重启nginx服务...