delegate--委托
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--委托的更多相关文章
- 快速理解C#高级概念(一) Delegate委托
做.NET开发很久,最近重新温习<C#高级编程>一书.发现很多曾经似懂非懂的问题,其实也是能够慢慢钻研慢慢理解的. 所以,打算开写<C#高级编程系列>博文.其中会借鉴<C ...
- WPF Delegate委托整理
那啥,是从这里整理出来的,感谢Rising_Sun,整理的过于简单,看不明白的戳这里 using System; using System.Collections.Generic; using Sys ...
- 关于js模拟c#的Delegate(委托)实现
这是我的第一篇博文,想来讲一讲js的函数.我的标题是js模拟c#的Delegate. 一.什么是Delegate(委托) 在jquery中有delegate函数,作用是将某个dom元素的标签的事件委托 ...
- 使用 EPPlus 封装的 excel 表格导入功能 (二) delegate 委托 --永远滴神
使用 EPPlus 封装的 excel 表格导入功能 (二) delegate 委托 --永远滴神 前言 接上一篇 使用 EPPlus 封装的 excel 表格导入功能 (一) 前一篇的是大概能用但是 ...
- 【UE4 C++ 基础知识】<8> Delegate 委托
概念 定义 UE4中的delegate(委托)常用于解耦不同对象之间的关联:委托的触发者不与监听者有直接关联,两者通过委托对象间接地建立联系. 监听者通过将响应函数绑定到委托上,使得委托触发时立即收到 ...
- C#delegate委托
类似函数,却没有语句体. using System; using System.Collections.Generic; using System.Linq; using System.Text; u ...
- C# EventHandler and Delegate(委托的使用)
委托的声明 public delegate void MyDelegate(string str); 注 1.委托的定义和方法的定义类似,只是在前面加了一个delegate,但委托不是方法,它是一种特 ...
- C# 匿名方法 委托 Action委托 Delegate委托
原文地址:https://msdn.microsoft.com/zh-cn/library/bb882516.aspx 匿名函数是一个“内联”语句或表达式,可在需要委托类型的任何地方使用. 可以使用匿 ...
- 转载: jQuery事件委托( bind() \ live() \ delegate()) [委托 和 绑定的故事]
转载:http://blog.csdn.net/zc2087/article/details/7287429 随着DOM结构的复杂化和Ajax等动态脚本技术的运用,事件委托自然浮出了水面.jQuery ...
- 转:C# Delegate委托 1
Delegate中文翻译为“委托”.MSDN中对Delegate的解释如下: C#中的委托类似于C或C++中的函数指针.使用委托使程序员可以将方法引用封装在委托对象内.然后可以将该委托对象传递给可调用 ...
随机推荐
- .NET-记一次架构优化实战与方案-底层服务优化
目录 .NET-记一次架构优化实战与方案-梳理篇 .NET-记一次架构优化实战与方案-前端优化 .NET-记一次架构优化实战与方案-底层服务优化 前言 经过上一篇<.NET-记一次架构优化实战与 ...
- Item 21: 比起直接使用new优先使用std::make_unique和std::make_shared
本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 让我们先从std::make_unique和std::make_s ...
- 计算机名称改名之后,tfs连接问题
计算机名称改名之后,我们发现tfs连接会有问题 打开vs下的“开发人员命令提示”执行下面两条语句: 1.tf workspaces 2.tf workspaces /collection:http:/ ...
- H5 25-CSS三大特性之层叠性
25-CSS三大特性之层叠性 我是段落 <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 软件工程(FZU2015) 赛季得分榜,第三回合
SE_FZU目录:1 2 3 4 5 6 7 8 9 10 11 12 13 积分规则 积分制: 作业为10分制,练习为3分制:alpha30分: 团队项目分=团队得分+个人贡献分 个人贡献分: 个人 ...
- 【问题解决方案】之 cmd 窗口问题汇总
cmd窗口C盘切不到其他盘的解决方案: 1.切换盘符,直接键入其他盘,如:>>D: (回车) 2.强行切换>>cd /d D: 或者 >>pushd C:
- tomcat7 server.xml max thread
java - Tomcat - maxThreads vs maxConnections - Stack Overflowhttps://stackoverflow.com/questions/246 ...
- vue嵌套路由
父组件 (注:to="/Flow/moban_a"这里不是文件加路径,是父组件路由+子组件路由) 路由配置
- keyvalue对RDD s
scala> val input =sc.textFile("/home/simon/SparkWorkspace/test.txt")input: org.apache.s ...
- python之路--面向对象-成员
一 . 成员 在类中你能写的所有内容都是类的成员 class 类名: # 方法 def__init__(self, 参数1, 参数2...): # 属性变量 self.属性1 = 参数1 self.属 ...