本文提供此 API 參考文件的補充備註。
.NET Framework 中的排序和字串比較
透過 .NET Framework 4,每個 .NET Framework 版本都包含包含字串正規化之排序權數和數據,以及以特定版本的 Unicode 為基礎的數據表。 在 .NET Framework 4.5 和更新版本中,這些數據表的存在取決於作系統:
- 在 Windows 7 和舊版上,數據表會繼續用於比較和排序字串。
- 在 Windows 8 上,.NET Framework 會將字串比較和排序作業委派給作系統。
因此,字串比較的結果不只取決於 .NET Framework 版本,而且取決於作系統版本,如下表所示。 請注意,此支援的 Unicode 版本清單僅適用於字元比較和排序;它不適用於依類別分類的 Unicode 字元分類。
| .NET Framework 版本 | 操作系統 | Unicode 版本 |
|---|---|---|
| 4 | 所有操作系統 | Unicode 5.0 |
| 4.5 和更新版本 | Windows 7 | Unicode 5.0 |
| 4.5 和更新版本 | Windows 8 和更新版本 | Unicode 6.0 |
在 Windows 8 上,因為字串比較和排序中使用的 Unicode 版本取決於作系統版本,因此即使在特定 .NET Framework 版本上執行的應用程式,字串比較的結果也可能會有所不同。
.NET Core 中的排序和字串比較
執行字串比較時,所有 .NET (Core) 版本都依賴基礎作系統。 因此,字串比較的結果或字串排序順序取決於作系統在執行比較時所使用的 Unicode 版本。 在 Linux、macOS 和 Windows 10 及更新版本上,Unicode 國際化組件庫 提供比較和排序 API 的實作。
使用 SortVersion 類別
類別 SortVersion 提供 .NET 用於字串比較和排序之 Unicode 版本的相關信息。 它可讓開發人員撰寫應用程式,以偵測並成功處理 Unicode 版本中用來比較和排序應用程式字串的變更。
您可以透過兩種方式具現化 SortVersion 物件:
- 藉由呼叫 建 SortVersion 構函式,以版本號碼和排序標識元為基礎具現化新的 SortVersion 物件。 從儲存的數據重新建立 SortVersion 物件時,這個建構函式最有用。
- 透過取得 CompareInfo.Version 屬性的值。 此屬性提供應用程式執行所在的 .NET 實作所使用的 Unicode 版本相關信息。
類別 SortVersion 有兩個屬性和 FullVersionSortId,表示 Unicode 版本和用於字串比較的特定文化特性。 屬性 FullVersion 是一個任意數值,反映用於字串比較的 Unicode 版本,而 SortId 屬性是一種任意 Guid 值,可反映其慣例用於字串比較的文化特性。 只有當您使用 SortVersion 方法、Equals運算符或 Equality 運算符來比較兩個物件時,這兩個Inequality屬性的值才很重要。
您通常會在儲存或擷取某種文化相關、已排序的字串資料時使用 SortVersion 物件,例如索引或文字字串本身。 這需要下列步驟:
儲存已排序的字串數據時,FullVersion 和 SortId 的屬性值也會被儲存。
擷取已排序的字串數據時,您可以藉由呼叫 SortVersion 建構函式來重新建立SortVersion用來排序字串的物件。
這個新建立的 SortVersion 物件將與反映用來排序字串數據的文化慣例的 SortVersion 物件進行比較。
如果兩個 SortVersion 物件不相等,則必須重新排序字串數據。