Nota

Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.

Pengurutan dan perbandingan string dalam .NET Framework

Melalui .NET Framework 4, setiap versi .NET Framework menyertakan tabel yang berisi bobot sortir dan data pada normalisasi string dan yang didasarkan pada versi Unicode tertentu. Dalam .NET Framework 4.5 dan versi yang lebih baru, keberadaan tabel ini tergantung pada sistem operasi:

  • Pada Windows 7 dan versi sebelumnya, tabel terus digunakan untuk membandingkan dan mengurutkan string.
  • Pada Windows 8, .NET Framework mendelegasikan perbandingan string dan operasi pemesanan ke sistem operasi.

Akibatnya, hasil perbandingan string tidak hanya dapat bergantung pada versi .NET Framework, tetapi juga pada versi sistem operasi, seperti yang ditunjukkan tabel berikut. Perhatikan bahwa daftar versi Unicode yang didukung ini hanya berlaku untuk perbandingan karakter dan pengurutan; tidak berlaku untuk klasifikasi karakter Unicode menurut kategori.

Versi .NET Framework Sistem operasi Versi Unicode
4 Semua sistem operasi Unicode 5.0
4.5 dan versi yang lebih baru Windows 7 Unicode 5.0
4.5 dan versi yang lebih baru Windows 8 dan versi yang lebih baru Unicode 6.0

Pada Windows 8, karena versi Unicode yang digunakan dalam perbandingan string dan pemesanan tergantung pada versi sistem operasi, hasil perbandingan string mungkin berbeda bahkan untuk aplikasi yang berjalan pada versi .NET Framework tertentu.

Pengurutan dan perbandingan string di .NET Core

Semua versi .NET (Core) mengandalkan sistem operasi yang mendasarinya saat melakukan perbandingan string. Oleh karena itu, hasil perbandingan string atau urutan di mana string diurutkan tergantung pada versi Unicode yang digunakan oleh sistem operasi saat melakukan perbandingan. Di Linux, macOS, dan Windows 10 dan versi yang lebih baru, Komponen Internasional untuk pustaka Unicode menyediakan implementasi untuk perbandingan dan pengurutan API.

Menggunakan kelas SortVersion

Kelas ini SortVersion menyediakan informasi tentang versi Unicode yang digunakan oleh .NET untuk perbandingan dan pengurutan string. Ini memungkinkan pengembang untuk menulis aplikasi yang dapat mendeteksi dan berhasil menangani perubahan dalam versi Unicode yang digunakan untuk membandingkan dan mengurutkan string aplikasi.

Anda dapat menginstansiasi objek SortVersion dengan dua cara:

  • Dengan memanggil konstruktor SortVersion, yang menginisialisasi objek baru SortVersion menurut nomor versi dan ID pengurutan. Konstruktor ini paling berguna saat membuat ulang objek dari data yang SortVersion disimpan.
  • Dengan mengambil nilai properti CompareInfo.Version. Properti ini menyediakan informasi tentang versi Unicode yang digunakan oleh implementasi .NET tempat aplikasi berjalan.

Kelas SortVersion ini memiliki dua properti, FullVersion dan SortId, yang menunjukkan versi Unicode dan budaya spesifik yang digunakan untuk perbandingan string. Properti FullVersion adalah nilai numerik arbitrer yang mencerminkan versi Unicode yang digunakan untuk perbandingan string, dan SortId properti adalah arbitrer Guid yang mencerminkan budaya yang konvensinya digunakan untuk perbandingan string. Nilai kedua properti ini hanya penting ketika Anda membandingkan dua SortVersion objek dengan menggunakan Equals metode , Equality operator , atau Inequality operator .

Anda biasanya menggunakan objek SortVersion saat menyimpan atau mengambil beberapa bentuk data string yang sensitif terhadap budaya dan terurut, seperti indeks atau teks literal. Ini memerlukan langkah-langkah berikut:

  1. Saat data string yang diurutkan disimpan, nilai properti FullVersion dan SortId juga disimpan.

  2. Saat data string yang diurutkan diambil, Anda dapat membuat ulang objek yang digunakan untuk mengurutkan string SortVersion dengan memanggil konstruktor SortVersion.

  3. Objek SortVersion yang baru diinstansiasi ini dibandingkan dengan objek SortVersion yang mencerminkan budaya yang konvensinya digunakan untuk mengurutkan data string.

  4. Jika dua SortVersion objek tidak sama, data string harus diurutkan ulang.