日韩天天综合网_野战两个奶头被亲到高潮_亚洲日韩欧美精品综合_av女人天堂污污污_视频一区**字幕无弹窗_国产亚洲欧美小视频_国内性爱精品在线免费视频_国产一级电影在线播放_日韩欧美内地福利_亚洲一二三不卡片区

解析.Net編程接口剖析系列之比較和排序(2)_.Net教程

編輯Tag賺U幣
教程Tag:暫無(wú)Tag,歡迎添加,賺取U幣!

推薦:揭秘.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ì)

以下為引用的內(nèi)容: public enum SubjectEnum
{
Total =0,
Chinese,
English,
Math,
}
  
public class Scores //分?jǐn)?shù)類,用于存儲(chǔ)分?jǐn)?shù)
{
int[] _score = new int[4];
public int this[SubjectEnum score]
{
get { return _score[(int)score]; }
set { _score[(int)score] = value; }
}
public override string ToString()
{
string str = "";
foreach (int score in _score)
{
str = "  " score.ToString();
}
  
return str;
}
}
  
public class Student:IComparable //學(xué)生類
{
  
string _name;
  
public string Name
{
get { return _name; }
set { _name = value; }
}
  
Scores _scores=new Scores();
  
public Scores Scores
{
get { return _scores; }
set { _scores = value; }
}
  
public Student(string name,int chinese, int english, int math)
{
_name = name;
  
_scores[SubjectEnum.Chinese] = chinese;
_scores[SubjectEnum.English] = english;
_scores[SubjectEnum.Math] = math;
_scores[SubjectEnum.Total] = chinese english math;
}
  
public override string ToString()
{
return _name _scores.ToString();
}
  
#region IComparable Members
  
public int CompareTo(object obj)
{
if (!(obj is Student))
throw new ArgumentException("Argument not a Student", "obj");
  
return Name.CompareTo(((Student)obj).Name);
}
  
#endregion
}

來(lái)看看我們的Main函數(shù),我們?cè)谝粋(gè)數(shù)組中存儲(chǔ)了若干個(gè)學(xué)生,并且利用了Array.Sort對(duì)起進(jìn)行了排序。

static void Main(string[] args)
{
Student[] students = new Student[4];
students[0] = new Student("Michale", 80, 90, 70);
students[1] = new Student("Jack", 90, 80, 75);
students[2] = new Student("Alex", 88, 85, 95);
students[3] = new Student("Rose", 92, 91, 65);
  
Array.Sort(students);
  
Console.WriteLine("Name  Total  Chinese  English  Math");
foreach (Student student in students)
{
Console.WriteLine(student);
}
  
Console.ReadKey();
}

下面來(lái)看看輸出結(jié)果:

Name Total Chinese English Math
Alex  268  88 85  95
Jack 245 90  80  75
Michale 240 80 90 70
Rose 248   92 91 65
 
可以發(fā)現(xiàn),學(xué)生們被很好的按照名稱字母的順序進(jìn)行了排序,并且從小到大地打印出來(lái)了。但是我們這里還是要留下一個(gè)問(wèn)題,假如我們有時(shí)候需要按照某項(xiàng)成績(jī)進(jìn)行排序又如何實(shí)現(xiàn)呢?假如我們排序的時(shí)候希望按照降序進(jìn)行排列又該如何呢?呵呵,聰明的讀者可能已經(jīng)想到了,這正是我下一節(jié)想要說(shuō)的內(nèi)容。

以下為引用的內(nèi)容: System.Collections.IComparer & System.Collections.Generic. IComparer<T>

IComparer是這么樣的一個(gè)接口,它是用于實(shí)現(xiàn)一個(gè)專門(mén)的“比較器”,這個(gè)比較器可以對(duì)傳入的兩個(gè)對(duì)象比較大小。我們來(lái)看看它的定義:

以下為引用的內(nèi)容: [ComVisible(true)]
public interface IComparer
{
int Compare(object x, object y);
}

大家可能會(huì)對(duì)IComparer存在的必要性有點(diǎn)疑問(wèn),那就是既然我們有了IComparable就能夠?qū)崿F(xiàn)對(duì)象的比較以及排序,那么還需要IComparer做什么呢,豈不是畫(huà)蛇添足?我的回答是:不,IComparer的存在很有必要,因?yàn)樗梢杂脕?lái)實(shí)現(xiàn)一些專門(mén)的和功能更加強(qiáng)大的比較器。就如現(xiàn)代社會(huì)的分工一樣,以前落后的小農(nóng)經(jīng)濟(jì)一去不復(fù)返了,社會(huì)上的各成員要進(jìn)行相互協(xié)作才能發(fā)揮最高的效率;同樣,我們?cè)O(shè)立專業(yè)的IComparer,使得比較的功能得以擴(kuò)展和專業(yè)化,你有了更多的選擇。將對(duì)象進(jìn)行比較的時(shí)候,你可以使用不同的IComparer來(lái)使用不同的方法來(lái)比較,就像我們購(gòu)買(mǎi)商品選擇不同的品牌一樣(試想這件東西不是購(gòu)買(mǎi)的而是你自己生產(chǎn)的話,那么你就失去了選擇的機(jī)會(huì)了)。另外專門(mén)的IComparer也可以提供一些屬性,來(lái)讓我們的比較變得更加靈活。

分享: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)作

來(lái)源:模板無(wú)憂//所屬分類:.Net教程/更新時(shí)間:2009-09-05
相關(guān).Net教程