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