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
使用委托回调多个方法(链式)
作者:
青羽
查看全文
相关阅读:
基于边缘保留滤波实现人脸磨皮的算法 | 掘金技术征文
图像算法---表面模糊算法
通过人脸照片更换皮肤的方法及系统
一种数字图像自动祛除斑点的方法
Leetcode 301.删除无效的括号
Leetcode 300.最长上升子序列
Leetcode 299.猜字游戏
Leetcode 297.二叉树的序列化和反序列化
Leetcode 295.数据流的中位数
Leetcode 289.生命游戏
原文地址:https://www.cnblogs.com/tenghoo/p/1208131.html
最新文章
【Objective-C】-空指针和野指针
iOS UIWebView URL拦截
说说iOS与内存管理(上)
IOS 关于取消延迟执行函数的种种。performSelector与cancelPreviousPerformRequestsWithTarget
3. 点云到球面的映射方法
2. 点云到平面的映射方法
叉积与点积
孤独——2
孤独——1
QT 进度条 QProgressDialog
热门文章
QTreeWidget 的用法
QTreeWidget里嵌套表格QTableView
1. 基于pcl 和 liblas 库 las与pcd格式(rgb点)相互转换(win10 VS2013 X64环境 )
arcgis属性选取like用法
深度学习AI美颜系列---AI美颜磨皮算法一
深度学习AI美颜系列---AI美颜磨皮算法二
Real-time Filter Camera&VideoRecorder And ImageEditor With Face Beauty For Android---包含美颜等40余种实时滤镜相机,可拍照、录像、图片修改
一种图像磨皮方法、装置及电子设备
Android平台Camera实时滤镜实现方法探讨(九)--磨皮算法探讨(一)
关于磨皮
Copyright © 2011-2022 走看看