zoukankan
html css js c++ java
基本类型委托(二)
15
.
6 C#
对委托的支持
15
.
7
对委托链调用进行更多控制
internal
sealed
class
Light
{
public
String SwitchPosition()
{
return
"
灯关了
"
;
}
}
internal
sealed
class
Fan
{
public
String Speed()
{
throw
new
InvalidOperationException(
"
风机因过热而报废
"
);
}
}
internal
sealed
class
Speaker
{
public
String Volume()
{
return
"
声音很大
"
;
}
}
public
sealed
class
Program
{
//
查询以上各个组件状态
private
delegate
String GetStatus();
public
static
void
Main()
{
GetStatus getstatus
=
null
;
getstatus
+=
new
GetStatus(
new
Light().SwitchPosition);
getstatus
+=
new
GetStatus(
new
Fan().Speed);
getstatus
+=
new
GetStatus(
new
Speaker().Volume);
Console.WriteLine(GetStatusReport(getstatus));
Console.ReadLine();
}
private
static
String GetStatusReport(GetStatus status)
{
if
(status
==
null
)
return
null
;
StringBuilder sb
=
new
StringBuilder();
Delegate[] arrayOfDelegate
=
status.GetInvocationList();
foreach
(GetStatus s
in
arrayOfDelegate)
{
try
{
sb.AppendFormat(
"
{0}{1}{1}
"
, s(), Environment.NewLine);
}
catch
(InvalidOperationException e)
{
Object component
=
s.Target;
sb.AppendFormat(
"
Failed to get status from{1}{2}{0}Error:{3}{0}{0}
"
,
Environment.NewLine,
((component
==
null
)
?
""
: component.GetType()
+
"
.
"
),
s.Method.Name,
e.Message);
}
}
return
sb.ToString();
}
}
15
.
8C#
为委托提供的语法便利
作者:
青羽
查看全文
相关阅读:
hibernate--could not initialize proxy
20160509-hibernate--继承映射
CF1111C Creative Snap
CF1097D Makoto and a Blackboard
CF1091D New Year and the Permutation Concatenation
CF1096D Easy Problem
CF1076E Vasya and a Tree
CF1081C Colorful Bricks
CF1081E Missing Numbers
CF1093D Beautiful Graph
原文地址:https://www.cnblogs.com/tenghoo/p/1208443.html
最新文章
Linux学习笔记01
Linux虚拟机安装学习笔记
Java语言编写TPL语言词法分析器
PHP学习笔记<参数的传递>
用java实现二分搜索<算法分析>
用二分法计算a的n次幂<算法分析>
贪心算法求解活动安排<算法分析>
动态规划法解最长公共子序列<算法分析>
使用回溯法解批处理作业调度问题<算法分析>
将Java程序打包成可执行EXE文件的步骤
热门文章
java程序调用bat脚本
java手工从键盘输入数字存放到数组并将其输出
spring3.2.0与mybatis3.2.7整合出错--Failed to read candidate component class--nested exception is java.lang.IllegalArgumentException
linux---基本查找命令
linux--vi编辑器
几个linux命令
20160522--20160526----mybatis入门基础
20160512--hibernate--缓存
如何用java实现使用电子邮件控制你的电脑
20160510--hibernate懒加载问题
Copyright © 2011-2022 走看看