c#扩展方法奇思妙用变态篇三:switch/case组扩展
2010-09-30 20:46:08 来源:WEB开发网这段代码定义了三个扩展Switch、Case和Default。
首先看这些扩展的一个最简单的应用,如下:
1 string typeName = string.Empty;
2 typeId.Switch((string s) => typeName = s)
3 .Case(0, "食品")
4 .Case(1, "饮料")
5 .Case(2, "酒水")
6 .Case(3, "毒药")
7 .Default("未知");
输入一个整数,返回它表示的含义。(很多方法可以解决这个问题,此处示例,请勿较真!)
这里解释一下,第2行中的lambda表达式:(string s)=>typeName = s 需要传入一个字符串参数。
第3~6行的Case在满足条件时将第二个参数“内部”返回,传给(string s)=>typeName = s。
这样来理解:当typeId为0时,Case返回“食品”并传入给lambda,为1时返回“饮料”...
最终lambda将值赋给了typeName。
有点绕,一定按这个思路去想,否则下面就不好明白了。
把上面的代码“展开”,相当于以下代码(有点长,折叠起来好一些):
Code
1 string typeName = string.Empty;
2 switch (typeId)
3 {
4 case 0:
5 typeName = "食品";
6 break;
7 case 1:
8 typeName = "食品";
9 break;
10 case 2:
11 typeName = "酒水";
12 break;
13 case 3:
14 typeName = "毒药";
15 break;
16 default:
17 typeName = "未知";
18 break;
19 }
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
- ››扩展 JUnit4 以促进测试驱动开发
- ››扩展 JUnit 测试并行程序
- ››扩展的ToolStripEx控件
- ››扩展 Eclipse 的 Java 开发工具
- ››扩展 Eclipse 辅助和规范开发流程
- ››扩展方法 DataTable 和List 相互转换
更多精彩
赞助商链接