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
随机推荐
- ajax系列之用jQuery的ajax方法向服务器发出get和post请求
打算写个ajax系列的博文,主要是写给自己看,学习下ajax的相关知识和用法,以更好的在工作中使用ajax. 假设有个网站A,它有一个简单的输入用户名的页面,界面上有两个输入框,第一个输入框包含在一个 ...
- ROC与AUC
一.ROC曲线 1.ROC曲线:接收者操作特征(receiveroperating characteristic),ROC曲线上每个点反映着对同一信号刺激的感受性. 横轴:负正类率(false pos ...
- 浅谈Web前端浏览器兼容问题
对于兼容最近一直困扰我,以前写的代码只是针对高质量用户来使用 不考虑IE7,8 这样的浏览器 ,但是最近我开发的时候必须要兼容,大喊一声我曹,没有办法,自己来吧! 所谓的浏览器兼容性问题,是指因为不同 ...
- Redmine插件及使用
Plugins Plugin list A full list of available Redmine plugins can be found at the Plugin Directory. M ...
- shell 分支/循环
==)); then patern="Update" else patern="Read" fi in "-h") ] then helpI ...
- 关于jquery 1.9以上多次点击checkbox无法选择的
在jquery1.9之前,我们对于一个checkbox对象来进行重复选择或者取消, 我们可以使用这个方法$().attr('checked',checked);//选中 $().removeAttr( ...
- C# LogHelper
using System; using log4net; using log4net.Config; namespace Utils { /// <summary> /// 日志帮助类(l ...
- CSS3 background-size:cover/contain
background-size的cover和contain指定背景图片的自适应方式,只能对整张图片进行缩放. cover是拉伸图片使之充满元素,元素肯定是被铺满的,但是图片有可能显示不全. conta ...
- linux看代码方法和建议
http://blog.csdn.net/lxl584685501/article/details/46803077
- VS插件-JSEnhancements
在Visaul Studio 2010中写js或css代码,缺少像写C#代码时的那种折叠功能,当代码比较多时,就很不方便. 今天发现,已经有VS2010扩展支持这个功能,它就是——JSEnhancem ...