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

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

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

推薦:揭秘.net基礎知識錯誤注意二十二點知識
1:command調(diào)用存儲過程的時候,如果輸出是dataset,selectcommand的command對象的connection先要指出,否則catch一輩子也是空的.. 2:存儲過程的varchar字段如果是x.x的這種格式,容易出現(xiàn)細

以下為引用的內(nèi)容: public enum SubjectEnum
{
Total =0,
Chinese,
English,
Math,
}
  
public class Scores //分數(shù)類,用于存儲分數(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 //學生類
{
  
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
}

來看看我們的Main函數(shù),我們在一個數(shù)組中存儲了若干個學生,并且利用了Array.Sort對起進行了排序。

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();
}

下面來看看輸出結果:

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),學生們被很好的按照名稱字母的順序進行了排序,并且從小到大地打印出來了。但是我們這里還是要留下一個問題,假如我們有時候需要按照某項成績進行排序又如何實現(xiàn)呢?假如我們排序的時候希望按照降序進行排列又該如何呢?呵呵,聰明的讀者可能已經(jīng)想到了,這正是我下一節(jié)想要說的內(nèi)容。

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

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

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

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

分享:Windows CE.Net下矩陣鍵盤開發(fā)設計詳解
引言 隨著現(xiàn)代科技日新月異的發(fā)展,作為新興產(chǎn)業(yè)的嵌入式移動信息設備的應用越來越廣。這些嵌入式設備中的PDA以其體積小、重量輕、便于攜帶、功能強大、功耗低等特點而備受青睞。鍵盤作

來源:模板無憂//所屬分類:.Net教程/更新時間:2009-09-05
相關.Net教程