C#之委托(函数参数传递)【转】
原文:http://blog.csdn.net/wangdan199112/article/details/18796527
在学委托这块儿的时候,函数参数这块不是很理解,于是针对一个例子做了深入的理解,和大家分享一下。
首先,先说一下我对委托的理解,委托就是一个可以执行多种同类功能的变量,之所以它是执行同类功能的变量,是因为它只能接受一个函数,而一个函数只能执行一种类型的功能,它的作用就是提高程序的灵活性,和扩展性,比如说如果我们不用委托,可能一个函数只能执行加法运算,但是如果用了委托,它可以同时执行加减乘除,也就是说这个程序的功能扩展了,工作的灵活性也提高了。
下面是一段有关幂和乘法运算同时进行的代码:
- <span style="font-size:18px;"> 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;
- }
- }
- }
- </span>
这段代码运行之后的结果如下:
在敲代码之前,我把源码看了一遍,不是很明白,就先敲完了,让它运行,看到运行结果,感觉代码明白了,主要就是没有理清它的逻辑,所以,有时候光想不做是不行的,先做了,也许就明白了。
C#之委托(函数参数传递)【转】的更多相关文章
- shell 脚本之获取命令输出字符串以及函数参数传递
在ubuntu 14.04之后,所有的U盘挂载也分用户之分,最近很多操作也和U盘有关,所以就研究了一上午shell脚本函数以及字符串操作的方法. 字符串操作: 获取他的命令输出比较简单,打个简单的比方 ...
- Python语言特性之1:函数参数传递
问题:在Python文档中好像没有明确指出一个函数参数传递的是值传递还是引用传递.如下面的代码中"原始值"是不放生变化的: class PassByReference: def _ ...
- VB几种函数参数传递方法,Variant,数组,Optional,ParamArray
VB几种函数参数传递方法,Variant,数组,Optional,ParamArray 一) 过程的参数被缺省为具有 Variant 数据类型. 1)ByRef按 地址传递参数在 VB 中是缺省的 按 ...
- Python 函数参数传递机制.
learning python,5e中讲到.Python的函数参数传递机制是对象引用. Arguments are passed by assignment (object reference). I ...
- C语言学习笔记 (005) - 二维数组作为函数参数传递剖析
前言 很多文章不外乎告诉你下面这几种标准的形式,你如果按照它们来用,准没错: //对于一个2行13列int元素的二维数组 //函数f的形参形式 f(int daytab[2][13]) {...} / ...
- c++指向指针的指针与 c++指针作为函数参数传递问题
一直搞不明白,c++中指针到底是个啥东西,今天遇到到c++,指向指针的指针的问题,突然有点开窍了. 举个例子: int main(int argc, char** argv){ int a[5]={1 ...
- (C++)函数参数传递中的一级指针和二级指针
主要内容: 1.一级指针和二级指针 2.函数指针传递的例子 3.什么时候需要传递二级指针? 4.二级指针在链表中的使用 1.一级指针和二级指针 一级指针:即我们一般说的指针,就是内存地址: 二级指针: ...
- **Python的函数参数传递 和 global
函数的参数到底是传递的一份复制的值,还是对内存的引用? 我们看下面一段代码: a = [] def fun(x): x.append(1) fun(a) print(a) 想想一下:如果传递的是一份复 ...
- python中函数参数传递的几种方法
转自 http://www.douban.com/note/13413855/ Python中函数参数的传递是通过“赋值”来传递的.但这条规则只回答了函数参数传递的“战略问题”,并没有回答“战术问题 ...
- perl 函数参数传递与返回值(一)
perl 函数参数传递与返回值(一) http://www.cnblogs.com/tobecrazy/archive/2013/06/11/3131887.html
随机推荐
- windows下练习linux shell
<---开始学习linux---记录一下---路漫漫其修远兮---加油吧---萌萌达> 使用软件:Cygwin 下载地址(免安装版):链接: http://pan.baidu.com/s ...
- 部署开启了Kerberos身份验证的大数据平台集群外客户端
转载请注明出处 :http://www.cnblogs.com/xiaodf/ 本文档主要用于说明,如何在集群外节点上,部署大数据平台的客户端,此大数据平台已经开启了Kerberos身份验证.通过客户 ...
- LaTeX入门教程(二)
LaTeX(LATEX,音译"拉泰赫")是一种基于ΤΕΧ的排版系统,由美国计算机学家莱斯利·兰伯特(Leslie Lamport)在20世纪80年代初期开发,利用这种格式,即使使用 ...
- Windows下安装Redmine-2.5.3
安装准备 服务器操作系统:Windows Server 2008 R2 Standard,64位操作系统. RailsInstaller版本:2.2.4 (下载地址http://railsinsta ...
- 【Java每日一题】20170113
20170112问题解析请点击今日问题下方的"[Java每日一题]20170113"查看(问题解析在公众号首发,公众号ID:weknow619) package Jan2017; ...
- go CD 用虚拟机快速增加一个新agent
背景 最近项目在用go CD做持续交付.为了最大化利用硬件,所有的agent都是用的vbox的虚拟机.随着pipelines的增加,就需要增加更多的agent. 步骤 为了快速增加新的agent,最简 ...
- Writing clean code is what you must do in order to call yourself a professional.
Clean Code A Handbook of Agile Software Craftsmanship
- windows 下安装Python
一.下载 官网地址:https://www.python.org/,64位的版本 二.安装 32位和64位的版本安装起来没有区别,双击打开后,第一步要记得勾上add python to Path 选项 ...
- html5的navigator调用手机震动
navigator.vibrate(s) 或 navigator.webkitVibrate(s),不过该属性只在安卓系统有效.
- php一些函数及方法...