解析.Net編程接口剖析系列之比較和排序(3)_.Net教程
推薦:揭秘.net基礎(chǔ)知識(shí)錯(cuò)誤注意二十二點(diǎn)知識(shí)1:command調(diào)用存儲(chǔ)過(guò)程的時(shí)候,如果輸出是dataset,selectcommand的command對(duì)象的connection先要指出,否則catch一輩子也是空的.. 2:存儲(chǔ)過(guò)程的varchar字段如果是x.x的這種格式,容易出現(xiàn)細(xì)
光說(shuō)太抽象,我們下面還是繼續(xù)上一節(jié)對(duì)學(xué)生進(jìn)行排序的問(wèn)題進(jìn)行討論。這里我們可以創(chuàng)建一個(gè)專(zhuān)門(mén)的學(xué)生比較類(lèi)StudentComparer, 而它則實(shí)現(xiàn)了IComparer的泛型接口System.Collections.Generic.IComparer<Student>,StudentComparer的作用是根據(jù)成績(jī)對(duì)學(xué)生進(jìn)行比較。為了將IComparer的優(yōu)越性體現(xiàn)出來(lái),我們這里在StudentComparer的構(gòu)造函數(shù)中增加了兩個(gè)參數(shù)subject和reverse,前者用于指定我們要按照何種科目成績(jī)進(jìn)行比較,而后者則指定是否將結(jié)果取反(當(dāng)然我們也可以使用Array.Reverse方法來(lái)將結(jié)果按照降序排列,這里只是實(shí)現(xiàn)方法之一)。好,這樣我們比較器就這樣設(shè)計(jì)好了,看看下面的代碼:
以下為引用的內(nèi)容: public class StudentComparer: System.Collections.Generic.IComparer<Student> |
一個(gè)功能強(qiáng)大的比較器就這樣實(shí)現(xiàn)了,那么接下來(lái)我們就來(lái)實(shí)現(xiàn)將學(xué)生按照總分進(jìn)行從高到底的排序,這里我們只需要對(duì)main函數(shù)進(jìn)行稍微的修改就可以了,使用Array.Sort的另外一個(gè)重載方法Array.Sort (T[], Generic IComparer) 來(lái)進(jìn)行比較。
看到上面我們?cè)赟tudentComparer的構(gòu)造函數(shù)中傳入了Total(總分)和True(降序),我們看看執(zhí)行結(jié)果:
| Name | Total | Chinese | English | Math |
| Alex | 268 | 88 | 85 | 95 |
| Rose | 248 | 92 | 91 | 65 |
| Jack | 245 | 90 | 80 | 75 |
| Michale | 240 | 80 | 90 | 70 |
太棒了,IComparer是這樣的神奇,想象一下如果沒(méi)有IComparer而僅僅要用IComparable來(lái)實(shí)現(xiàn)上面的功能,將是多么麻煩的事情,更加重要的是,那會(huì)將Student類(lèi)的代碼變的一團(tuán)糟,就如同一個(gè)上班族卻天天要想著回家給自己種的蔬菜澆澆水,給自己養(yǎng)的豬喂喂食一樣,這些瑣碎的東西會(huì)讓你的生活一團(tuán)糟的。
分享:Windows CE.Net下矩陣鍵盤(pán)開(kāi)發(fā)設(shè)計(jì)詳解引言 隨著現(xiàn)代科技日新月異的發(fā)展,作為新興產(chǎn)業(yè)的嵌入式移動(dòng)信息設(shè)備的應(yīng)用越來(lái)越廣。這些嵌入式設(shè)備中的PDA以其體積小、重量輕、便于攜帶、功能強(qiáng)大、功耗低等特點(diǎn)而備受青睞。鍵盤(pán)作
- asp.net如何得到GRIDVIEW中某行某列值的方法
- .net SMTP發(fā)送Email實(shí)例(可帶附件)
- js實(shí)現(xiàn)廣告漂浮效果的小例子
- asp.net Repeater 數(shù)據(jù)綁定的具體實(shí)現(xiàn)
- Asp.Net 無(wú)刷新文件上傳并顯示進(jìn)度條的實(shí)現(xiàn)方法及思路
- Asp.net獲取客戶端IP常見(jiàn)代碼存在的偽造IP問(wèn)題探討
- VS2010 水晶報(bào)表的使用方法
- ASP.NET中操作SQL數(shù)據(jù)庫(kù)(連接字符串的配置及獲取)
- asp.net頁(yè)面?zhèn)髦禍y(cè)試實(shí)例代碼
- DataGridView - DataGridViewCheckBoxCell的使用介紹
- asp.net中javascript的引用(直接引入和間接引入)
- 三層+存儲(chǔ)過(guò)程實(shí)現(xiàn)分頁(yè)示例代碼
- 相關(guān)鏈接:
- 教程說(shuō)明:
.Net教程-解析.Net編程接口剖析系列之比較和排序(3)
。