zoukankan
html css js c++ java
基本类型委托(一)
15
.
1
初识委托
//
声明一个委托,它的实例引用一个方法,该方法接受一个Int32的参数并返回void
internal
delegate
void
Feedback(Int32 value);
public
sealed
class
Program
{
public
static
void
Main()
{
StaticDelegateDemo();
InstanceDelegateDemo();
ChainDelegateDemo1(
new
Program());
ChainDelegateDemo2(
new
Program());
}
//
委托调用静态回调方法
private
static
void
StaticDelegateDemo()
{
Console.WriteLine(
"
---StaticDelegateDemo---
"
);
Counter(
1
,
3
,
null
);
Counter(
1
,
3
,
new
Feedback(FeedBackToConsole));
Counter(
1
,
3
,
new
Feedback(FeedBackToMsgBox));
Console.ReadLine();
}
//
委托调用实例回调方法
private
static
void
InstanceDelegateDemo()
{
Console.WriteLine(
"
---InstanceDelegateDemo---
"
);
Program p
=
new
Program();
Counter(
1
,
3
,
new
Feedback(p.FeedBackToFile));
Console.ReadLine();
}
//
顺序调用多个静态、实例方法
private
static
void
ChainDelegateDemo1(Program p)
{
Console.WriteLine(
"
---ChainDelegateDemo1---
"
);
Feedback fb1
=
new
Feedback(FeedBackToConsole);
Feedback fb2
=
new
Feedback(FeedBackToMsgBox);
Feedback fb3
=
new
Feedback(p.FeedBackToFile);
Feedback fbChain
=
null
;
fbChain
=
(Feedback)Delegate.Combine(fbChain, fb1);
fbChain
=
(Feedback)Delegate.Combine(fbChain, fb2);
fbChain
=
(Feedback)Delegate.Combine(fbChain, fb3);
Counter(
4
,
5
, fbChain);
Console.WriteLine();
fbChain
=
(Feedback)Delegate.Remove(fbChain,
new
Feedback(FeedBackToMsgBox));
Counter(
6
,
7
, fbChain);
Console.ReadLine();
}
//
顺序调用多个静态、实例方法
private
static
void
ChainDelegateDemo2(Program p)
{
Console.WriteLine(
"
---ChainDelegateDemo2---
"
);
Feedback fb1
=
new
Feedback(FeedBackToConsole);
Feedback fb2
=
new
Feedback(FeedBackToMsgBox);
Feedback fb3
=
new
Feedback(p.FeedBackToFile);
Feedback fbChain
=
null
;
fbChain
+=
fb1;
fbChain
+=
fb2;
fbChain
+=
fb3;
Counter(
8
,
9
, fbChain);
Console.WriteLine();
fbChain
-=
new
Feedback(FeedBackToMsgBox);
Counter(
10
,
11
, fbChain);
Console.ReadLine();
}
//
private
static
void
Counter(Int32 from, Int32 to, Feedback fb)
{
for
(
int
i
=
from; i
<=
to; i
++
)
{
if
(fb
!=
null
)
fb(i);
}
}
private
static
void
FeedBackToConsole(Int32 value)
{
Console.WriteLine(
"
控制台输出:
"
+
value);
}
private
static
void
FeedBackToMsgBox(Int32 value)
{
Console.WriteLine(
"
消息框显示:
"
+
value);
}
private
void
FeedBackToFile(Int32 value)
{
StreamWriter sw
=
new
StreamWriter(
"
C:/FeedBackToFile.txt
"
,
true
);
sw.WriteLine(
"
文件显示:
"
+
value);
sw.Close();
}
}
15
.
2
使用委托来回调静态方法
15
.
3
使用委托回调实例方法
15
.
4
委托揭秘
15
.
5
使用委托回调多个方法(链式)
作者:
青羽
查看全文
相关阅读:
岳麓山岳麓书院
花洲书院
《诫子书》诸葛亮
AI ML DL
台湾大学林轩田机器学习基石
LeNet
VGGNet
AlexNet 2012
AS 中 Plugin for Gradle 和 Gradle 之间的版本对应关系
AndroidStudio、gradle、buildToolsVersion关系
原文地址:https://www.cnblogs.com/tenghoo/p/1208131.html
最新文章
mysql 数据表读锁机制详解
Nginx中FastCGI配置优化
Nginx+FastCGI到底是谁影响超时时间
PHP-PHP-FPM的max_children一些误区
phpfpm开启pm.status_path配置,查看fpm状态参数
lumen路由配置nginx
javascript中var that=this
f(!gotop.length) return false;
CSS3 transition 属性——逐渐变慢/匀速/加速/减速/加速然后减速
audio音频
热门文章
zepto为什么不支持animate,报animate is not a function
原生态js,返回至顶部
img标签中onerror用法
js验证汉字正则表达式
下拉出生日期(日历)年月日程序是可以写死的,不用前端来写,但如何判断2月是没有30、31号呢?
python发送post请求
11个你应该知道的django博客引擎
Ningx代码研究.
字符串匹配的KMP算法
学弈
Copyright © 2011-2022 走看看