稍加改进的Switch/Case扩展方法
2010-09-30 21:05:29 来源:WEB开发网核心提示:引言鹤冲天的《c#扩展方法奇思妙用》系列给了我很多启示,其中的很多用法大大提升了代码编写效率,稍加改进的Switch/Case扩展方法,最近小研究了一下他提供的《c#扩展方法奇思妙用变态篇三:switch/case组扩展》一文提供的扩展方法,并依照自己的习惯重新实现了一下,还有就是这样的代码段可以放在方法的参数中使用,
引言
鹤冲天的《c#扩展方法奇思妙用》系列给了我很多启示,其中的很多用法大大提升了代码编写效率,最近小研究了一下他提供的《c#扩展方法奇思妙用变态篇三:switch/case组扩展》一文提供的扩展方法,并依照自己的习惯重新实现了一下,现分享一下我的实现。
范例
先看一下他原文中的范例:
我觉得这里唯一不爽的就是高亮的那部分,因为这里必需要显式声明类型并作后续处理,我希望直接让编译器推导出返回类型,来看看改进后的实现:
string typeName = typeId.Switch()
.CaseReturn(0, "食品")
.CaseReturn(1, "饮料")
.CaseReturn(2, "酒水")
.CaseReturn(3, "毒药")
.DefaultReturn("未知")
.ReturnValue;
在一连串的CaseReturn/DefaultReturn后通过ReturnValue属性就可以访问到最终的返回结果,这样就可以直接使用,不需再传入表达式进行后续处理了。
这样做还有一个好处,就是当代码段位于方法体中时,可以直接return结果,而如果像原文那样传入表达式来处理结果的话,是不能直接return的,在表达式里return仅会被视为表达式级别的return。
还有就是这样的代码段可以放在方法的参数中使用,这会很方便,可以将其视作三元表达式的加强版。
在原文中还有这样一种重载:
更多精彩
赞助商链接