国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發(fā)設(shè)計 > 正文

C#ASP.NET 通用擴展函數(shù)之 LogicSugar 簡單好用

2019-11-17 02:08:27
字體:
供稿:網(wǎng)友

C#asp.net 通用擴展函數(shù)之 LogicSugar 簡單好用

說明一下性能方面 還可以接受 循環(huán)1000次普通Switch是用了0.001秒 ,擴展函數(shù)為0.002秒 , 如果是大項目在有負載均衡的情況下完全可以無視掉,小項目也不會計較這點性能了。

注意需要引用 “SyntacticSugar”

用法:

            //【Switch】            string bookKey = "c#";            //以前寫法            string myBook = "";            switch (bookKey)            {                case "c#":                    myBook = "asp.net技術(shù)";                    break;                case "java":                    myBook = "java技術(shù)";                    break;                case "sql":                    myBook = "mssql技術(shù)";                    break;                default:                    myBook = "要飯技術(shù)";                    break;//打這么多break和封號,手痛嗎?            }            //現(xiàn)在寫法             myBook =bookKey.Switch().Case("c#", "asp.net技術(shù)").Case("java", "java技術(shù)").Case("sql", "sql技術(shù)").Default("要飯技術(shù)").Break();//點的爽啊            /**                  C#類里看不出效果,  在mvc razor里   ? 、&& 或者 || 直接使用都會報錯,需要外面加一個括號,嵌套多了很不美觀,使用自定義擴展函數(shù)就沒有這種問題了。                        */            bool isSuccess = true;            //【IIF】            //以前寫法            var trueVal1 = isSuccess ? 100 :0;            //現(xiàn)在寫法            var trueVal2 = isSuccess.IIF(100);            //以前寫法            var str = isSuccess ? "我是true" : "";            //現(xiàn)在寫法            var str2 = isSuccess.IIF("我是true");            //以前寫法            var trueVal3 = isSuccess ? 1 : 2;            //現(xiàn)在寫法            var trueVal4 = isSuccess.IIF(1, 2);            string id = "";            string id2 = "";            //以前寫法             isSuccess = (id == id2) && (id != null && Convert.ToInt32(id) > 0);            //現(xiàn)在寫法            isSuccess = (id == id2).And(id != null, Convert.ToInt32(id) > 0);            //以前寫法            isSuccess = id != null || id != id2;            //現(xiàn)在寫法            isSuccess = (id != null).Or(id != id2);

  

源碼

using System;using System.Collections.Generic;using System.Linq;using System.Text;namespace SyntacticSugar{    /// <summary>    /// ** 描述:邏輯糖來簡化你的代碼    /// ** 創(chuàng)始時間:2015-6-1    /// ** 修改時間:-    /// ** 作者:sunkaixuan    /// ** 使用說明:http://m.survivalescaperooms.com/sunkaixuan/p/4545338.html    /// </summary>    public static class LogicSugarExtenions    {        /// <summary>        /// 根據(jù)表達式的值,來返回兩部分中的其中一個。        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="thisValue"></param>        /// <param name="trueValue">值為true返回 trueValue</param>        /// <param name="falseValue">值為false返回 falseValue</param>        /// <returns></returns>        public static T IIF<T>(this bool thisValue, T trueValue, T falseValue)        {            if (thisValue)            {                return trueValue;            }            else            {                return falseValue;            }        }        /// <summary>        /// 根據(jù)表達式的值,true返回trueValue,false返回string.Empty;        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="thisValue"></param>        /// <param name="trueValue">值為true返回 trueValue</param>        /// <returns></returns>        public static string IIF(this bool thisValue, string trueValue)        {            if (thisValue)            {                return trueValue;            }            else            {                return string.Empty;            }        }        /// <summary>        /// 根據(jù)表達式的值,true返回trueValue,false返回0        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="thisValue"></param>        /// <param name="trueValue">值為true返回 trueValue</param>        /// <returns></returns>        public static int IIF(this bool thisValue, int trueValue)        {            if (thisValue)            {                return trueValue;            }            else            {                return 0;            }        }        /// <summary>        /// 根據(jù)表達式的值,來返回兩部分中的其中一個。        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="thisValue"></param>        /// <param name="trueValue">值為true返回 trueValue</param>        /// <param name="falseValue">值為false返回 falseValue</param>        /// <returns></returns>        public static T IIF<T>(this bool? thisValue, T trueValue, T falseValue)        {            if (thisValue == true)            {                return trueValue;            }            else            {                return falseValue;            }        }        /// <summary>        /// 所有值為true,則返回true否則返回false        /// </summary>        /// <param name="thisValue"></param>        /// <param name="andValues"></param>        /// <returns></returns>        public static bool And(this bool thisValue, params bool[] andValues)        {            return thisValue && !andValues.Where(c => c == false).Any();        }        /// <summary>        /// 只要有一個值為true,則返回true否則返回false        /// </summary>        /// <param name="thisValue"></param>        /// <param name="andValues"></param>        /// <returns></returns>        public static bool Or(this bool thisValue, params bool[] andValues)        {            return thisValue || andValues.Where(c => c == true).Any();        }        /// <summary>        /// Switch().Case().Default().Break()        /// </summary>        /// <typeparam name="T"></typeparam>        /// <param name="thisValue"></param>        /// <returns></returns>        public static SwitchSugarModel<T> Switch<T>(this T thisValue)        {            var reval = new SwitchSugarModel<T>();            reval.SourceValue = thisValue;            return reval;        }        public static SwitchSugarModel<T> Case<T, TReturn>(this SwitchSugarModel<T> switchSugar, T caseValue, TReturn returnValue)        {            if (switchSugar.SourceValue.Equals(caseValue))            {                switchSugar.IsEquals = true;                switchSugar.ReturnVal = returnValue;            }            return switchSugar;        }        public static SwitchSugarModel<T> Default<T, TReturn>(this SwitchSugarModel<T> switchSugar, TReturn returnValue)        {            if (switchSugar.IsEquals == false)                switchSugar.ReturnVal = returnValue;            return switchSugar;        }        public static dynamic Break<T>(this SwitchSugarModel<T> switchSugar)        {            string reval = switchSugar.ReturnVal;            switchSugar = null;//清空對象,節(jié)約性能            return reval;        }        public class SwitchSugarModel<T>        {            public T SourceValue { get; set; }            public bool IsEquals { get; set; }            public dynamic ReturnVal { get; set; }        }    }}

  


發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 大石桥市| 福泉市| 平安县| 泗阳县| 贵德县| 井冈山市| 会泽县| 当涂县| 山阴县| 临湘市| 依兰县| 华池县| 海安县| 淮滨县| 清新县| 鄯善县| 伊通| 大方县| 灌阳县| 乌海市| 黎川县| 拉萨市| 繁昌县| 泸水县| 玉龙| 文成县| 法库县| 开平市| 车险| 唐河县| 嘉义县| 扶余县| 上杭县| 凤阳县| 黄浦区| 清徐县| 龙州县| 华池县| 循化| 鄢陵县| 南安市|