WEB开发网
开发学院软件开发C语言 稍加改进的Switch/Case扩展方法 阅读

稍加改进的Switch/Case扩展方法

 2010-09-30 21:05:29 来源:WEB开发网   
核心提示:引言鹤冲天的《c#扩展方法奇思妙用》系列给了我很多启示,其中的很多用法大大提升了代码编写效率,稍加改进的Switch/Case扩展方法,最近小研究了一下他提供的《c#扩展方法奇思妙用变态篇三:switch/case组扩展》一文提供的扩展方法,并依照自己的习惯重新实现了一下,还有就是这样的代码段可以放在方法的参数中使用,

引言

鹤冲天的《c#扩展方法奇思妙用》系列给了我很多启示,其中的很多用法大大提升了代码编写效率,最近小研究了一下他提供的《c#扩展方法奇思妙用变态篇三:switch/case组扩展》一文提供的扩展方法,并依照自己的习惯重新实现了一下,现分享一下我的实现。

范例

先看一下他原文中的范例:

稍加改进的Switch/Case扩展方法

我觉得这里唯一不爽的就是高亮的那部分,因为这里必需要显式声明类型并作后续处理,我希望直接让编译器推导出返回类型,来看看改进后的实现:

string typeName = typeId.Switch()
 .CaseReturn(0, "食品")
 .CaseReturn(1, "饮料")
 .CaseReturn(2, "酒水")
 .CaseReturn(3, "毒药")
 .DefaultReturn("未知")
 .ReturnValue;

在一连串的CaseReturn/DefaultReturn后通过ReturnValue属性就可以访问到最终的返回结果,这样就可以直接使用,不需再传入表达式进行后续处理了。

这样做还有一个好处,就是当代码段位于方法体中时,可以直接return结果,而如果像原文那样传入表达式来处理结果的话,是不能直接return的,在表达式里return仅会被视为表达式级别的return。

还有就是这样的代码段可以放在方法的参数中使用,这会很方便,可以将其视作三元表达式的加强版。

在原文中还有这样一种重载:

稍加改进的Switch/Case扩展方法

1 2 3 4 5  下一页

Tags:稍加 改进 Switch

编辑录入:爽爽 [复制链接] [打 印]
赞助商链接