WEB开发网
开发学院软件开发C语言 c#扩展方法奇思妙用变态篇三:switch/case组扩展 阅读

c#扩展方法奇思妙用变态篇三:switch/case组扩展

 2010-09-30 20:46:08 来源:WEB开发网   
核心提示: Case的最后一个参数false表示符合条件后不break,继续下一个Case,c#扩展方法奇思妙用变态篇三:switch/case组扩展(5),多个Case链起来使用不一定最后一个参数全为false,可以如下调用:1 int i = 5;2 int j = 0;3 i.Switch((int

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>,这是一简单的泛型类,如下:

上一页  1 2 3 4 5 6  下一页

Tags:扩展 方法 奇思

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