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#
为委托提供的语法便利
作者:
青羽
查看全文
相关阅读:
【随笔】野生在左 科班在右——数据结构学习誓师贴
javascript基础修炼(7)——Promise,异步,可靠性
express中间件系统的基本实现
javascript基础修炼(6)——前端路由的基本原理
javascript基础修炼(5)—Event Loop(Node.js)
一统江湖的大前端(7)React.js-从开发者到工程师
一统江湖的大前端(6)commander.js + inquirer.js——懒,才是第一生产力
一统江湖的大前端(5)editorconfig + eslint——你的代码里藏着你的优雅
Jmeter接口测试之用户自定义变量(九)
Jmeter4.0接口测试之案例实战(七)
原文地址:https://www.cnblogs.com/tenghoo/p/1208443.html
最新文章
jQuery.prop , jQuery.attr ,jQuery.data
用泛型来实现编译时期的类型推断
系统不支持WP开发
又是一个Notepad++的问题
win8 notepad++ 设置无法保存
WinFrom Thread里面new出来的控件不显示
Define Constraints That Are Minimal and Sufficient 设定不多不少的约束
Use Generic Replacements of 1.X Framework API Classes 用泛型替换Framework 1.X版本的API类
More Effective C# 【前戏】
超简单的批量创建文件夹方法
热门文章
vue.js使用props在父子组件之间传参
Vue-cli搭建完项目,各文件解释
JS中使用正则表达式替换对象里的大小写
阻止浏览器冒泡事件,兼容firefox和ie
动态计算rem的js代码
从XMLHttpRequest请求响应里getResponseHeader(header)报错:Refused to get unsafe header "**" 问题解决
微信小程序使用字体图标的方法
判断标签是否包含class的方法
野生前端的数据结构基础练习(2)——队列
野生前端的数据结构基础练习(1)——栈
Copyright © 2011-2022 走看看