Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Artikel ini menyediakan keterangan tambahan untuk dokumentasi referensi untuk API ini.
Perbandingan dua string yang sensitif terhadap budaya bergantung pada setiap karakter dalam string yang memiliki beberapa kategori bobot penyortiran, termasuk bobot naskah, alfabetik, huruf besar-kecil, dan diakritik. Kunci sortir berfungsi sebagai repositori bobot ini untuk string tertentu.
Metode CompareInfo.GetSortKey ini mengembalikan sebuah instans dari SortKey kelas yang mencerminkan pemetaan karakter yang sensitif terhadap budaya dalam string tertentu. Nilai sebuah objek adalah data utama SortKey, yang dikembalikan oleh properti KeyData. 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 GetSortKey(String, CompareOptions) dengan nilai CompareOptions.IgnoreCase, operasi perbandingan string 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 demi byte yang sederhana, sehingga jauh lebih cepat daripada metode String.Compare atau CompareInfo.Compare.
Nota
Anda dapat mengunduh Tabel Bobot Pengurutan, sekumpulan file teks yang berisi informasi tentang bobot karakter yang digunakan dalam operasi pengurutan dan perbandingan untuk sistem operasi Windows, Tabel Elemen Pengurutan Unicode Default, tabel bobot pengurutan 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. Informasi kunci yang diurutkan dihitung, dan tidak ada objek SortKey yang dibuat. Strategi ini ekonomis dalam hal performa jika kedua string dibandingkan sekali, tetapi menjadi mahal jika string yang sama dibandingkan berkali-kali.
Metode Compare merupakan pembuatan objek SortKey untuk setiap string sebelum perbandingan dilakukan. Strategi ini mahal dalam hal performa untuk perbandingan pertama karena waktu dan memori yang diinvestasikan untuk menghasilkan SortKey objek. Namun, menjadi lebih ekonomis jika kunci pengurutan yang sama dibandingkan berulang 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 CompareInfo.GetSortKey(String, CompareOptions) mengembalikan objek SortKey dengan nilai berdasarkan string yang ditentukan dan nilai CompareOptions, serta budaya yang terkait dengan objek CompareInfo yang mendasar. 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:
Ambil budaya invarian dari properti CultureInfo.InvariantCulture.
Ambil objek CompareInfo untuk budaya invarian dari properti CultureInfo.CompareInfo.
Panggil metode CompareInfo.GetSortKey(String, CompareOptions).
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.