c#扩展方法奇思妙用变态篇三:switch/case组扩展
2010-09-30 20:46:08 来源:WEB开发网Case的最后一个参数false表示符合条件后不break,继续下一个Case。
多个Case链起来使用不一定最后一个参数全为false,可以如下调用:
1 int i = 5;
2 int j = 0;
3 i.Switch((int k) => j += i * i)
4 .Case(1, 1, true)
5 .Case(2, 2, false)
6 .Case(3, 1)
7 .Case(4, 2, true)
8 .Default(5);
这段代码没实际意思,只是为了说明可以像swith/case那样使用。
这里也使用了“链式编程”(概念参见我的相关文章),它们是如何串起来的。我们看下这几个扩展的定义:
1 public static SwithCase<TCase, TOther> Switch<TInput, TCase, TOther>
2 (this TInput t, Func<TInput, TCase> selector, Action<TOther> action)
3 where TCase : IEquatable<TCase> {}
4
5 public static SwithCase<TCase, TOther> Case<TCase, TOther>
6 (this SwithCase<TCase, TOther> sc, Predicate<TCase> predict, TOther other, bool bBreak)
7 where TCase : IEquatable<TCase> {}
8
9 public static void Default<TCase, TOther>(this SwithCase<TCase, TOther> sc, TOther other){}
Swith扩展可用于任意类型,任意类型的实例都可以调用Swith。
Swith扩展返回SwithCase<TCase, TOther>,这是一简单的泛型类,如下:
- ››扩展Axis2框架,支持基于JVM的脚本语言
- ››扩展WebSphere Portal V6个性化功能
- ››扩展JavaScript的时候,千万要保留其原来的所有功...
- ››扩展数据:如何为 Model 750 服务器选择 I/O 扩展...
- ››扩展 JDT 实现自动代码注释与格式化
- ››扩展 secldap 的功能以验证多个数据源
- ››扩展 JUnit4 以促进测试驱动开发
- ››扩展 JUnit 测试并行程序
- ››扩展的ToolStripEx控件
- ››扩展 Eclipse 的 Java 开发工具
- ››扩展 Eclipse 辅助和规范开发流程
- ››扩展方法 DataTable 和List 相互转换
更多精彩
赞助商链接