摘要:(200-06-28) C#.NET 實作IComparable
List 排序方式 實作 IComparable<T> 介面
父類別 Employee
using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace csmod01.khh.domain { /// <summary> /// 員工類別 /// </summary> public class Employee { #region "資料欄與屬性" //Data Field private String _id; /// <summary> /// 設定與取得員工編號 /// </summary> public String Id { get { return _id; } set { _id = value; } } private String _name; /// <summary> /// 設定獲取得員工姓名 /// </summary> public String Name { get { return _name; } set { _name = value; } } private String _address; public String Address { get { return _address; } set { _address = value; } } private DateTime _birthDate; public DateTime BirthDate { get { return _birthDate; } set { if (value < DateTime.Now) { _birthDate = value; } } } #endregion //常數const 預設static public const String COMPANYNAME = "巨匠"; //建構子 /// <summary> /// 空參數建構子 使用存取子設定資訊 /// </summary> public Employee() { } //建構子多載 /// <summary> /// 具有起始資訊建構子 /// </summary> /// <param name="_id">編號</param> /// <param name="_name">姓名</param> public Employee(String _id, String _name) { this._id = _id; this._name = _name; } } }
子類別 Salse
using System; using System.Collections.Generic; using System.Linq; using System.Text; using csmod01.khh.domain; namespace csmod01 { //單一繼承Employee //實作介面Interface ,多重實做 public class Sales:Employee,IComparable<Sales> { //Data Field private Decimal _qa; private DateTime _bir; public DateTime Bir { get { return _bir; } set { _bir = value; } } public Decimal Qa { get { return _qa; } set { if (value > 0) { _qa = value; } } } #region IComparable<Sales> 成員 public int CompareTo(Sales other) { Int32 r = 0; //相等 //比對 if (this._qa > other._qa) { r = -1; } if (this._qa < other._qa) { r = 1; } return r; } #endregion public Sales():base() { } public Sales(String _id, String _name): base(_id, _name) { } } }
主程式
using System; using System.Collections.Generic; using System.Linq; using System.Text; using csmod01.khh.domain; namespace csmod01 { class TestSales { //主程式 public static void Main() { //建構泛型集合物件 收集員工類型 System.Collections.Generic.List<Sales> col = new List<Sales>(); Sales s1=new Sales(); s1.Qa=10000; s1.Bir = new DateTime(2010, 5, 10); col.Add(s1); Sales s2 = new Sales(); s2.Qa = 50000; s2.Bir = new DateTime(2010, 7, 10); col.Add(s2); Sales s3 = new Sales(); s3.Qa = 20000; s3.Bir = new DateTime(2010, 6, 10); col.Add(s3); foreach (Sales e in col) { //if (e is Sales) //{ // //強制轉型 // Sales s = (Sales)e; System.Console.WriteLine(e.Bir.ToString("yyyy-MM-dd")); } //逐一參考 col.Sort(); foreach (Sales e in col) { //if (e is Sales) //{ // //強制轉型 // Sales s = (Sales)e; System.Console.WriteLine(e.Bir.ToString("yyyy-MM-dd")); } } } }