C#_delegate - 有返回值手工调用
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading; namespace EventClock
{ public class ClassWithDelegate
{
//封装了一个返回值为int的多重委托方法
public delegate int DelegateThatReturns();
public DelegateThatReturns theDelegate; public void Run()
{
for (; ; )
{
Thread.Sleep(500); if (theDelegate != null)
{
//显式调用每个委托方法
foreach (DelegateThatReturns del in theDelegate.GetInvocationList())
{
int result = del();
Console.WriteLine("Delegates fired! return result: {0}",result);
}
Console.WriteLine();
}
}
}
} public class FirstSubscribe
{
private int myCounter = 0; public void Subscribe(ClassWithDelegate theClassWithDelegate)
{
theClassWithDelegate.theDelegate += new ClassWithDelegate.DelegateThatReturns(DisplayCounter);
} public int DisplayCounter()
{
return ++myCounter;
}
}
public class SecondSubscribe
{
private int myCounter = 0; public void Subscribe(ClassWithDelegate theClassWithDelegate)
{
theClassWithDelegate.theDelegate += new ClassWithDelegate.DelegateThatReturns(Doubler);
} public int Doubler()
{
return myCounter += 2;
}
} class Program
{
static void Main(string[] args)
{
ClassWithDelegate theClassWithDelegate = new ClassWithDelegate(); FirstSubscribe fs = new FirstSubscribe();
fs.Subscribe(theClassWithDelegate); SecondSubscribe ss = new SecondSubscribe();
ss.Subscribe(theClassWithDelegate); theClassWithDelegate.Run(); Console.ReadLine();
}
}
}
C#_delegate - 有返回值手工调用的更多相关文章
- Python3基础 定义无参数无返回值函数 调用会输出hello world的函数
镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体.-------------------------------------- ...
- Shell函数:Shell函数返回值、删除函数、在终端调用函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...
- Shell函数返回值、删除函数、在终端调用函数
Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: function_name () { list of commands [ return value ] ...
- 【Shell脚本学习22】Shell 函数:Shell函数返回值、删除函数、在终端调用函数
函数可以让我们将一个复杂功能划分成若干模块,让程序结构更加清晰,代码重复利用率更高.像其他编程语言一样,Shell 也支持函数.Shell 函数必须先定义后使用. Shell 函数的定义格式如下: f ...
- Autorelease返回值的快速释放机制
+ (instancetype)createSark { return [self new];}// callerSark *sark = [Sark createSark]; 编译器改写成了形如下面 ...
- Shell入门教程:Shell函数的返回值
shell函数返回值一般有3种方式: 1.return语句(默认的返回值) shell函数的返回值可以和其他语言的返回值一样,通过return语句返回. 比如: #!/bin/bash functio ...
- 获取layer.open弹出层的返回值
正在开发的车联网项目用到了layer API.当我在开发“新建电子围栏”的时候需要弹出地图,用户在地图中画一个区域,最后将这个弹出层的数据返回给原页面.下面是我的实现过:程: 触发弹出层的代码: la ...
- ThinkPHP中数据库操作返回值总结
转自:http://www.baiwar.com/post/thinkphp-database-operations-in-the-return-value.html Thinkphp中的Think\ ...
- 【转】ThinkPHP中数据库操作返回值总结
Thinkphp中的Think\Model类提供了数据库的基本CURD(Create.Update.Read及Delete),通过该类可以很便捷的进行操作.Model类及扩展类主要的方法有: Crea ...
随机推荐
- MySQL join的实现原理及优化思路
Join 的实现原理 在MySQL 中,只有一种Join 算法,也就是Nested Loop Join,没有其他很多数据库所提供的Hash Join,也没有Sort Merge Join.顾名思义,N ...
- Webservice、WSDL三种服务访问的方式【转】
http://www.cnblogs.com/yongfeng/archive/2013/01/30/2883146.html 用soapUI试了下wsdl的测试,但还是不知道webService和W ...
- poj2686-Traveling by Stagecoach(状压dp)
题意: n张马票,m个城市,马票上有马数(决定速度),一张只能用一次,给出地图,求从城市a到b的最短时间. 分析:n值很小状态压缩 #include <map> #include < ...
- 劳动节BT5 aircrack-ng战记
劳动节最后一天没事,想捣鼓一下BT5破解无线wep/wpa,BT5+virtual box早已准备就绪,上网专门找了一些资料,并买了一个据评测很兼容的usb网卡tp-link wn722n,芯片代号A ...
- [原]《打造未来的Java》视频笔记
[Date]2013-09-28 [Author]wintys (wintys@gmail.com) http://wintys.cnblogs.com [Content]: 1.Java7新特性 1 ...
- 一些常被你忽略的CSS小知识
1.CSS的color属性并非只能用于文本显示 对于CSS的color属性,相信所有Web开发人员都使用过.如果你并不是一个特别有经 验的程序员,我相信你未必知道color属性除了能用在文本显示,还可 ...
- htmlcss笔记--定位
1.定位: position:relative(相对) 不影响元素本身的特性: 不使元素推理原来文档流:还占有所在的位子. 定位元素控制:top/right/bottom/left 定位元素偏移量. ...
- 609C Load Balancing
题意: ”平均数“的意思是:最大数和最小数之间的差值为0或1: 先求“平均”数组,再相减. #include<iostream> #include<cstdlib> #incl ...
- Linux 下文件名乱码(无效的编码)的解决办法
文件是在WIndows 下创建的,Windows 的文件名中文编码默认为GBK,而Linux中默认文件名编码为UTF8,由于编码 不一致所以导致了文件名乱码的问题,解决这个问题需要对文件名进行转码. ...
- 【转载】grep,egrep,fgrep详解
[转载自]http://blog.csdn.net/homking/article/details/6000711 egrep 等价于 grep -E fgrep 等价于 grep -F grep - ...