WEB开发网
开发学院软件开发C语言 c#扩展方法奇思妙用变态篇二:封装 if/else、swit... 阅读

c#扩展方法奇思妙用变态篇二:封装 if/else、swith/case及while

 2010-09-30 20:46:12 来源:WEB开发网   
核心提示: 对引用类型我们可以使用Action<T>,也以使用链式编程的方式将多个If串起来,c#扩展方法奇思妙用变态篇二:封装 if/else、swith/case及while(3),但对值类型来说,就要用Func<T, T>了,每次返回一个新的值 : public static

对引用类型我们可以使用Action<T>,也以使用链式编程的方式将多个If串起来。

但对值类型来说,就要用Func<T, T>了,每次返回一个新的值 : 

        public static T If<T>(this T t, Predicate<T> predicate, Func<T, T> func) where T : struct
        {
            return predicate(t) ? func(t) : t;
        }

调用代码也要修改:

        public static void Test2()
        {
            //扩展方式
            int int0 = -121;
            int int1 = int0.If(i => i < 0, i => -i)
                .If(i => i > 100, i => i - 100)
                .If(i => i % 2 == 1, i => i - 1);
            //常规方式
            int int3 = -121;
            if (int3 < 0) int3 = -int3;
            if (int3 > 100) int3 -= 100;
            if (int3 % 2 == 1) int3--;
        }

引用类型及值类型的扩展我们已经完成,用string来测试一下吧,如下:

        public static void Test3()
        {
            //从邮箱变换成主页
            string email = "ldp615@163.com";
            string page = email.If(s => s.Contains("@"), s => s.Substring(0, s.IndexOf("@")))
                .If(s =>! s.StartsWith("www."), s => s = "www." + s)
                .If(s =>! s.EndsWith(".com"), s => s += ".com");
        }

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

Tags:扩展 方法 奇思

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