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

首頁(yè) > 學(xué)院 > 開(kāi)發(fā)設(shè)計(jì) > 正文

C#:params 有啥用?

2019-11-14 10:17:43
字體:
來(lái)源:轉(zhuǎn)載
供稿:網(wǎng)友

C#.net中提供了一個(gè)關(guān)鍵字 params,以前都不知道有這個(gè)關(guān)鍵字,有一次,同事看到我的幾版重載函數(shù)后,淡定地和我說(shuō)了一句,哥呀,你可以用params,后來(lái)查了查,現(xiàn)在經(jīng)常用習(xí)慣了,這不剛才又把之前寫(xiě)的幾版都拿掉了,又用params重構(gòu)了下。

那么,我就把params的用處,我經(jīng)歷的這個(gè)過(guò)程說(shuō)一下。

1 問(wèn)題的需求 在客戶(hù)端,客戶(hù)經(jīng)常會(huì)變動(dòng)查詢(xún)的字段,前幾天還是根據(jù)4個(gè)關(guān)鍵字段去服務(wù)器查詢(xún)幾個(gè)模型呢,今天,又想加1個(gè)查詢(xún)字段。

根據(jù)4個(gè)關(guān)鍵字段的查詢(xún)方法:

public void GetPlansByInputControl(string planState, string contactno,DatePair dp) { string planStat = ""; switch (planState) { case "...": planStat = "..."; break; case "...": planStat = "..."; break; } plans = getPlansWithCondition(Convert.ToDateTime(dp.startValue), Convert.ToDateTime(dp.endValue), planStat, contactno); }

調(diào)用的getPlansWithCondition方法為

PRivate List<MPartPlan> getMPartPlansWithCondition(DateTime dateTime, DateTime dateEndTime, string planStat, string contactNo) { var conditions = new CslSqlBaseSingleTable(); conditions.AddCondition("RequireStartDate", dateTime, DataCompareType.GreaterOrEqual); conditions.AddCondition("RequireStartDate", dateEndTime, DataCompareType.LessOrEqual); conditions.AddCondition("OrderCode", contactNo, DataCompareType.Equal); if (!string.IsNullOrEmpty(planStat)) { conditions.AddCondition("PlanState", planStat, DataCompareType.Equal); } return _cslMPartPlan.QueryListInSingleTable(typeof(MPartPlan), conditions); } }

問(wèn)題來(lái)了,當(dāng)查詢(xún)?cè)傩录?個(gè)字段時(shí),你難道還再重載一個(gè)版本嗎?

2 應(yīng)用params

private List<MPartPlan> getMPartPlansWithCondition(DateTime dateTime, DateTime dateEndTime, string planStat, string contactNo,string newField);

當(dāng)C#提供了params后,當(dāng)然不用,直接將getMPartPlansWithCondition改寫(xiě)為如下

private List<MPartPlan> getMPartPlansWithCondition(params object[] queryConditions);{ queryConditions[0] queryConditions[1] queryConditions[2] queryConditions[3] queryConditions[4] //放到字典中dict sqlQuery(dict);}

以后隨意添加查詢(xún)字段,只要修改下這個(gè)函數(shù)就行了,不用增刪重載版本?。?!

客戶(hù)端調(diào)用,直接加一個(gè)字段就行

_bsl.GetPlansByInputControl(field1, field2,field3,field4,field5);

3 總結(jié)

queryFun(params object[] objs),帶有這個(gè)參數(shù)的函數(shù),只需要一個(gè)版本,這樣解決了因?yàn)閭€(gè)數(shù)不一致而導(dǎo)致的多個(gè)重載版本, 在客戶(hù)端調(diào)用時(shí),將屬性參數(shù)一一列數(shù)即可。


發(fā)表評(píng)論 共有條評(píng)論
用戶(hù)名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 益阳市| 同江市| 凉城县| 九龙城区| 徐闻县| 襄垣县| 周宁县| 金秀| 芒康县| 齐河县| 新乡县| 桦川县| 彰武县| 体育| 泰和县| 濮阳县| 富顺县| 阳新县| 陈巴尔虎旗| 甘洛县| 墨脱县| 韶山市| 海丰县| 江油市| 湖州市| 峡江县| 民县| 衡东县| 蓬莱市| 茌平县| 嘉祥县| 邯郸市| 和静县| 含山县| 基隆市| 大方县| 乡宁县| 盐亭县| 郁南县| 台前县| 巢湖市|