SortKey kelas

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

Perbandingan dua string yang sensitif terhadap budaya tergantung pada setiap karakter dalam string yang memiliki beberapa kategori bobot sortir, termasuk bobot skrip, alfabet, kasus, dan diakritik. Kunci sortir berfungsi sebagai repositori bobot ini untuk string tertentu.

Metode ini CompareInfo.GetSortKey mengembalikan instans SortKey kelas yang mencerminkan pemetaan karakter yang sensitif terhadap budaya dalam string tertentu. Nilai objek adalah SortKey data kuncinya, yang dikembalikan oleh KeyData properti . Data utama ini terdiri dari serangkaian byte yang mengodekan string, aturan pengurutan khusus budaya, dan opsi perbandingan yang ditentukan pengguna. Perbandingan menggunakan kunci pengurutan terdiri dari perbandingan bitwise dari data kunci yang sesuai di setiap kunci pengurutan. Misalnya, jika Anda membuat kunci pengurutan dengan memanggil metode dengan nilai , operasi perbandingan GetSortKey(String, CompareOptions)CompareOptions.IgnoreCasestring yang menggunakan kunci pengurutan tidak peka huruf besar/kecil.

Setelah Anda membuat kunci pengurutan untuk string, Anda membandingkan kunci pengurutan dengan memanggil metode statis SortKey.Compare . Metode ini melakukan perbandingan byte-byte sederhana, sehingga jauh lebih cepat daripada String.Compare metode atau CompareInfo.Compare .

Catatan

Anda dapat mengunduh Pengurutan Tabel Berat, sekumpulan file teks yang berisi informasi tentang bobot karakter yang digunakan dalam operasi pengurutan dan perbandingan untuk sistem operasi Windows, Tabel Elemen Kolase Unicode Default, tabel berat sortir untuk Linux dan macOS.

Pertimbangan performa

Saat melakukan perbandingan string, Compare metode dan CompareInfo.Compare menghasilkan hasil yang sama, tetapi menargetkan skenario yang berbeda.

Pada tingkat tinggi, CompareInfo.Compare metode menghasilkan kunci pengurutan untuk setiap string, melakukan perbandingan, lalu membuang kunci sortir dan mengembalikan hasil perbandingan. Namun, metode ini CompareInfo.Compare sebenarnya tidak menghasilkan seluruh kunci pengurutan untuk melakukan perbandingan. Sebagai gantinya, metode ini menghasilkan data kunci untuk setiap elemen teks (yaitu, karakter dasar, pasangan pengganti, atau menggabungkan urutan karakter) di setiap string. Metode ini kemudian membandingkan data kunci untuk elemen teks yang sesuai. Operasi berakhir segera setelah hasil akhir perbandingan ditentukan. Urutkan informasi kunci dihitung, tetapi tidak ada SortKey objek yang dibuat. Strategi ini ekonomis dalam hal performa jika kedua string dibandingkan sekali, tetapi menjadi mahal jika string yang sama dibandingkan berkali-kali.

Metode ini Compare memerlukan pembuatan SortKey objek untuk setiap string sebelum melakukan perbandingan. Strategi ini mahal dalam hal performa untuk perbandingan pertama karena waktu dan memori yang diinvestasikan untuk menghasilkan SortKey objek. Namun, itu menjadi ekonomis jika kunci sortir yang sama dibandingkan berkali-kali.

Misalnya, Anda menulis aplikasi yang mencari tabel database untuk baris di mana kolom indeks berbasis string cocok dengan string pencarian tertentu. Tabel berisi ribuan baris, dan membandingkan string pencarian dengan indeks di setiap baris akan memakan waktu lama. Oleh karena itu, ketika aplikasi menyimpan baris dan kolom indeksnya, aplikasi juga menghasilkan dan menyimpan kunci pengurutan untuk indeks dalam kolom yang didedikasikan untuk meningkatkan performa pencarian. Saat aplikasi mencari baris target, aplikasi membandingkan kunci pengurutan untuk string pencarian dengan kunci pengurutan untuk string indeks, alih-alih membandingkan string pencarian dengan string indeks.

Pertimbangan keamanan

Metode mengembalikan CompareInfo.GetSortKey(String, CompareOptions)SortKey objek dengan nilai berdasarkan string dan CompareOptions nilai tertentu, dan budaya yang terkait dengan objek yang mendasar CompareInfo . Jika keputusan keamanan tergantung pada perbandingan string atau perubahan kasus, Anda harus menggunakan CompareInfo.GetSortKey(String, CompareOptions) metode budaya invarian untuk memastikan bahwa perilaku operasi konsisten, terlepas dari pengaturan budaya sistem operasi.

Gunakan langkah-langkah berikut untuk mendapatkan kunci pengurutan:

  1. Ambil budaya invarian dari CultureInfo.InvariantCulture properti .

  2. CompareInfo Ambil objek untuk budaya invarian dari CultureInfo.CompareInfo properti .

  3. Panggil CompareInfo.GetSortKey(String, CompareOptions) metode.

Bekerja dengan nilai SortKey objek setara dengan memanggil metode Windows LCMapString dengan nilai LCMAP_SORTKEY yang ditentukan. Namun, untuk SortKey objek, kunci pengurutan untuk karakter bahasa Inggris mendahului kunci pengurutan untuk karakter Korea.

SortKey objek dapat diserialisasikan, tetapi hanya agar dapat melintasi AppDomain objek. Jika aplikasi menserialisasikan SortKey objek, aplikasi harus meregenerasi semua kunci pengurutan ketika ada versi baru .NET.

Untuk informasi selengkapnya tentang pengurutan kunci, lihat Standar Teknis Unicode #10, "Algoritma Kolase Unicode" di situs web Unicode Consortium.