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#
为委托提供的语法便利
作者:
青羽
查看全文
相关阅读:
Android核心分析 ---- 电话系统之GSMCallTacker
Android核心分析 ----- Android电话系统之RIL-Java
Android核心分析 ------ 电话系统之rilD
Android核心分析 ----- Android电话系统-概述篇
AndroidRuntime 流程
关于++和--运算符的理解
使用eclips开发java时的闪退问题
Android--控件的滑动事件
Running Hero.
软件工程第三次大作业分工说明
原文地址:https://www.cnblogs.com/tenghoo/p/1208443.html
最新文章
Xcode技巧-如何显示中文
KVC
weak && strong 指针
addTarget:(id) action:(SEL) forControlEvents:(UIControlEvents)的解释
错误-终止应用程序由于未捕获的异常的nsinvalidargumentexception’,原因:“[:]:未知的UIView setImage选择器送到实例0x8d78d20”
Temporary Post Used For Theme Detection (2a511a50-5b31-486b-8481-355df6edf0cb
swift 基本语法---01
ios程序中的通知机制
IOS 多线程编程之 NSThread 的使用
C++Vector用法(转)
热门文章
LayoutInflater的inflate函数用法(转)
Android中SharedPreferences的使用
IOS中使用TBXML解析XML
使用Core Data加载数据时出现‘Cannot create an NSPersistentStoreCoordinator with a nil model’错误的原因
IOS分层架构设计时xcode5.0 Build Phases选项卡 右下角找不到Add Build Phase
NSAssert详解
IOS页面间得传值方式
startActivity(intent); 启动 类文件出现 返回两次才可以到上级界面纠结
没什么比犹豫和纠结更浪费时间
投资大师罗杰斯给女儿的信
Copyright © 2011-2022 走看看