delegate--委托  (可以把委托看成用来执行方法的一个东西)

eg:

namespace delegateTest
{
delegate double MathsOp(double x);
class Program
{
public class MyDelegate
{
public static double MultiplyBy2(double x)
{
return x * 2;
}
}

[STAThread]//[STAThread] attribute指示应用程序的 COM 线程模型是单线程单元 若为多线程单元则是 [MTAThread]

static void Main(string[] args)
{
MathsOp operation = new MathsOp(MyDelegate.MultiplyBy2);

double x = 1.23;

double result = operation(x);

Console.WriteLine("{0}multiply by 2 is {1}", x, result);

Console.Read();

}
}
}

  

多路广播委托
   前面使用的委托只包含一个方法调用。调用委托的次数与调用方法的次数相同。
如果要调用多个方法,就需要多次显示调用这个委托。其实委托也可以包含多个方法,
这种委托就是多路广播委托。我们可以通过+=来向委托添加调用方法,
也可以用-=删除其中的调用方法。如:

namespace delegateTest
{
public class MyDelegate
{
public static void MultiplyBy2(double value)
{
double result = value * 2;
Console.WriteLine("Multiplying by 2 :{0}gives{1}", value, result);
}
public static void Squre(double value)
{
double result = value * value;
Console.WriteLine("Squaring:{0}gives{1}", value, result);
}
}
delegate void MathsOp(double x);

class Program
{
[STAThread]
static void Main(string[] args)
{

//MyDelegate.MultiplyBy2作为函数参数
MathsOp operation = new MathsOp(MyDelegate.MultiplyBy2);
operation += new MathsOp(MyDelegate.Squre);
double x = 1.23;
operation(x);

operation -= new MathsOp(MyDelegate.MultiplyBy2);
operation(x);
}
}
}

为什么要用委托
  使用委托使程序员可以将方法引用封装在委托对象内。
然后可以将该委托对象传递给可调用所引用方法的代码,
而不必在编译时知道将调用哪个方法。
与C或C++中的函数指针不同,委托是面向对象,而且是类型安全的。

delegate--委托的更多相关文章

  1. 快速理解C#高级概念(一) Delegate委托

    做.NET开发很久,最近重新温习<C#高级编程>一书.发现很多曾经似懂非懂的问题,其实也是能够慢慢钻研慢慢理解的. 所以,打算开写<C#高级编程系列>博文.其中会借鉴<C ...

  2. WPF Delegate委托整理

    那啥,是从这里整理出来的,感谢Rising_Sun,整理的过于简单,看不明白的戳这里 using System; using System.Collections.Generic; using Sys ...

  3. 关于js模拟c#的Delegate(委托)实现

    这是我的第一篇博文,想来讲一讲js的函数.我的标题是js模拟c#的Delegate. 一.什么是Delegate(委托) 在jquery中有delegate函数,作用是将某个dom元素的标签的事件委托 ...

  4. 使用 EPPlus 封装的 excel 表格导入功能 (二) delegate 委托 --永远滴神

    使用 EPPlus 封装的 excel 表格导入功能 (二) delegate 委托 --永远滴神 前言 接上一篇 使用 EPPlus 封装的 excel 表格导入功能 (一) 前一篇的是大概能用但是 ...

  5. 【UE4 C++ 基础知识】<8> Delegate 委托

    概念 定义 UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系. 监听者通过将响应函数绑定到委托上,使得委托触发时立即收到 ...

  6. C#delegate委托

    类似函数,却没有语句体. using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...

  7. C# EventHandler and Delegate(委托的使用)

    委托的声明 public delegate void MyDelegate(string str); 注 1.委托的定义和方法的定义类似,只是在前面加了一个delegate,但委托不是方法,它是一种特 ...

  8. C# 匿名方法 委托 Action委托 Delegate委托

    原文地址:https://msdn.microsoft.com/zh-cn/library/bb882516.aspx 匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用. 可以使用匿 ...

  9. 转载: jQuery事件委托( bind() \ live() \ delegate()) [委托 和 绑定的故事]

    转载:http://blog.csdn.net/zc2087/article/details/7287429 随着DOM结构的复杂化和Ajax等动态脚本技术的运用,事件委托自然浮出了水面.jQuery ...

  10. 转:C# Delegate委托 1

    Delegate中文翻译为“委托”.MSDN中对Delegate的解释如下: C#中的委托类似于C或C++中的函数指针.使用委托使程序员可以将方法引用封装在委托对象内.然后可以将该委托对象传递给可调用 ...

随机推荐

  1. BZOJ1004 HNOI2008 Cards Burnside、背包

    传送门 在没做这道题之前天真的我以为\(Polya\)可以完全替代\(Burnside\) 考虑\(Burnside\)引理,它要求的是对于置换群中的每一种置换的不动点的数量. 既然是不动点,那么对于 ...

  2. 解决object at 0x01DB75F0

    python在学习过程中吗,由于常常会出现代码运行没报错,但输出的却不是我们想要的结果(图表,列表等等),而出现类似 <filter object at 0x01DB75F0>的情况,比如 ...

  3. echarts使用笔记二:柱子堆叠

    1.多个柱子堆叠效果,多用于各部分占比 app.title = '坐标轴刻度与标签对齐'; option = { title : { //标题 x : 'center', y : 5, text : ...

  4. 【学习总结】C-翁恺老师-入门-第4周<循环控制>

    [学习总结]C-翁恺老师-入门-总 1-阶乘:引入for循环 2-控制循环次数:初始化与控制条件的设置 任何一个for循环都可以写成一个while循环 for中的每一个表达式都是可以省略的:for(; ...

  5. #Leetcode# 524. Longest Word in Dictionary through Deleting

    https://leetcode.com/problems/longest-word-in-dictionary-through-deleting/ Given a string and a stri ...

  6. Drools 规则引擎

    Drools - Drools - Business Rules Management System (Java™, Open Source) http://drools.org/ [Drools]J ...

  7. Tomcat集成Memcached Session Manager方案

    http://repo1.maven.org/maven2/de/javakaffee/msm/memcached-session-manager/2.3.2/memcached-session-ma ...

  8. C#设计模式之1:策略模式

    首先需要说明的是该系列的所有内容都是基于headfirst设计模式来描述的.因为我之前也看过不少关于设计模式的书,还是发现这本最好,因为这本书里面给出的例子是最贴切实际的.不说了,开始这个系列吧! 策 ...

  9. C#复习笔记(1)--C#开发的进化史

    前言:陆续使用C#已经有一年半的时间.中间做过一些应用,现在为了有更高的提升,决定重新看一遍C# in depth,并总结一些笔记. 一.从简单的数据类型开始 上面是C#1到C#4中的一部分演变历程. ...

  10. [转帖]ulimit、limits.conf、sysctl和proc文件系统

    ulimit.limits.conf.sysctl和proc文件系统 来源:https://blog.csdn.net/weixin_33918114/article/details/86882372 ...