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

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

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

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

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

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

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

C#之委托(函数参数传递)【转】的更多相关文章

  1. shell 脚本之获取命令输出字符串以及函数参数传递

    在ubuntu 14.04之后,所有的U盘挂载也分用户之分,最近很多操作也和U盘有关,所以就研究了一上午shell脚本函数以及字符串操作的方法. 字符串操作: 获取他的命令输出比较简单,打个简单的比方 ...

  2. Python语言特性之1:函数参数传递

    问题:在Python文档中好像没有明确指出一个函数参数传递的是值传递还是引用传递.如下面的代码中"原始值"是不放生变化的: class PassByReference: def _ ...

  3. VB几种函数参数传递方法,Variant,数组,Optional,ParamArray

    VB几种函数参数传递方法,Variant,数组,Optional,ParamArray 一) 过程的参数被缺省为具有 Variant 数据类型. 1)ByRef按 地址传递参数在 VB 中是缺省的 按 ...

  4. Python 函数参数传递机制.

    learning python,5e中讲到.Python的函数参数传递机制是对象引用. Arguments are passed by assignment (object reference). I ...

  5. C语言学习笔记 (005) - 二维数组作为函数参数传递剖析

    前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...

  6. c++指向指针的指针与 c++指针作为函数参数传递问题

    一直搞不明白,c++中指针到底是个啥东西,今天遇到到c++,指向指针的指针的问题,突然有点开窍了. 举个例子: int main(int argc, char** argv){ int a[5]={1 ...

  7. (C++)函数参数传递中的一级指针和二级指针

    主要内容: 1.一级指针和二级指针 2.函数指针传递的例子 3.什么时候需要传递二级指针? 4.二级指针在链表中的使用 1.一级指针和二级指针 一级指针:即我们一般说的指针,就是内存地址: 二级指针: ...

  8. **Python的函数参数传递 和 global

    函数的参数到底是传递的一份复制的值,还是对内存的引用? 我们看下面一段代码: a = [] def fun(x): x.append(1) fun(a) print(a) 想想一下:如果传递的是一份复 ...

  9. python中函数参数传递的几种方法

    转自  http://www.douban.com/note/13413855/ Python中函数参数的传递是通过“赋值”来传递的.但这条规则只回答了函数参数传递的“战略问题”,并没有回答“战术问题 ...

  10. perl 函数参数传递与返回值(一)

    perl 函数参数传递与返回值(一) http://www.cnblogs.com/tobecrazy/archive/2013/06/11/3131887.html

随机推荐

  1. 百度地图API的自动定位和搜索功能(移动端)

    近期有个项目涉及到百度地图API,要求做到自动定位和搜索功能.煞费苦心的研究半天,终于能将两个功能合二为一,现将代码贴出来分享给大家,希望你们的砖搬得又快又好.注释不多,具体请参照:http://lb ...

  2. ASP.NET MVC之控制器传递数据到视图的四种方式

    前奏 1. 在新建项目中的Models文件下,新建Products类: public class Products { public int Id { get; set; } public strin ...

  3. 妙味H5交互篇备忘

      document.addEventListener( 'touchstart', function(e){ e.preventDefault(); } ); 在document上增加touchst ...

  4. UIView类绘图出现错误提示

    一:问题: Jan 16 15:49:53  CUBOT Band Ⅲ[2082] <Error>: CGContextSetLineWidth: invalid context 0x0. ...

  5. GTK+2.0学习——C指针回顾

    工作需要,开始做GTK,但是很久没碰C了,来捡一下C的精华. 一.*和&的意义 *:指针运算符 &:取地址运算符 两者优先级一样,从右向左方向结合 二.指针和指针变量 指针:一个变量的 ...

  6. [学习笔记]agileone安装登陆报错,localhost重定向次数过多

    1.找到.htaccess文件 2.修改RewriteEngine  参数为off即可

  7. thinkphp5.0 自动加载

    自动加载 概述 ThinkPHP5.0真正实现了按需加载,所有类库采用自动加载机制,并且支持类库映射和composer类库的自动加载. 自动加载的实现由think\Loader类库完成,自动加载规范符 ...

  8. Xsser

    来源:https://www.cqhacker.cn/post-174.html   XSSer使用说明 =============================================== ...

  9. [Poi2015]

    [POI2015]Łasuchy 一看以为是sb题 简单来说就是每个人获得热量要尽量多 不能找别人 首先这道题好像我自己找不到NIE的情况 很容易想到一个优化 如果一个数/2>另一个数 那么一定 ...

  10. chd校内选拔赛题目+题解

    题目链接   A. Currency System in Geraldion 有1时,所有大于等于1的数都可由1组成.没有1时,最小不幸的数就是1. #include<iostream> ...