首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> .NET 網頁程式設計 >> ASP.NET 基礎 >> 關於ASP.NET

程式碼閱讀筆記:ASP.NET StartKit TimeTracker 自訂集合排序

     編輯:關於ASP.NET

背景

專案中定義多個繼承 ArrayList 的強型別集合 (如 UsersCollection、TimeEntriesCollection),皆實作 Sort() 方法。

ArrayList.Sort() 運作機制

  • 內部呼叫 QuickSort,要求元素實作 IComparable 或提供 IComparer。
  • 基本型別 (int, string) 已實作 IComparable,可直接排序。
  • 自訂類別必須實作 IComparable 介面 (CompareTo 方法)。

驗證範例

// 基本型別
ArrayList a = new ArrayList { 111, 2 };
a.Sort(); // 2, 111

// 自訂類別未實作 IComparable → 拋出 InvalidOperationException
ArrayList b = new ArrayList { new Class2("wo"), new Class2("ai") };
b.Sort(); // 錯誤

// 正確做法:實作 IComparable
public class Class2 : IComparable {
    public string A { get; set; }
    public int CompareTo(object obj) => A.CompareTo(((Class2)obj).A);
}

TimeTracker 實作方式

集合類別覆寫 Sort(),內部傳入自訂 IComparer 實作 (如依 UserName、Date 排序),**不修改實體類別**,符合開放封閉原則。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved