CA1309: Gunakan Perbandingan String ordinal
Properti | Nilai |
---|---|
ID Aturan | CA1309 |
Judul | Menggunakan StringComparison ordinal |
Golongan | Globalisasi |
Perbaikan bersifat disruptif atau non-disruptif | Non-disruptif |
Diaktifkan secara default di .NET 9 | No |
Penyebab
Operasi perbandingan string yang nonbahasa tidak mengatur StringComparison parameter ke Ordinal atau OrdinalIgnoreCase.
Deskripsi aturan
Banyak operasi string, yang paling penting System.String.Compare adalah metode dan System.String.Equals , sekarang memberikan kelebihan beban yang menerima System.StringComparison nilai enumerasi sebagai parameter.
Saat Anda menentukan StringComparison.Ordinal atau StringComparison.OrdinalIgnoreCase, perbandingan string adalah non-linguistik. Artinya, fitur yang khusus untuk bahasa alami diabaikan ketika keputusan perbandingan dibuat. Mengabaikan fitur bahasa alami berarti keputusan didasarkan pada perbandingan byte sederhana dan bukan pada tabel casing atau kesetaraan yang diparameterkan oleh budaya. Akibatnya, dengan secara eksplisit mengatur parameter ke StringComparison.Ordinal atau StringComparison.OrdinalIgnoreCase, kode Anda sering mendapatkan kecepatan, meningkatkan kebenaran, dan menjadi lebih andal.
Cara memperbaiki pelanggaran
Untuk memperbaiki pelanggaran aturan ini, ubah metode perbandingan string menjadi kelebihan beban yang menerima System.StringComparison enumerasi sebagai parameter, dan tentukan Ordinal atau OrdinalIgnoreCase. Misalnya, ubah String.Compare(str1, str2)
menjadi String.Compare(str1, str2, StringComparison.Ordinal)
.
Kapan harus menekan peringatan
Aman untuk menekan peringatan dari aturan ini ketika pustaka atau aplikasi ditujukan untuk audiens lokal terbatas, atau ketika semantik budaya saat ini harus digunakan.
Menyembunyikan peringatan
Jika Anda hanya ingin menyembunyikan satu pelanggaran, tambahkan arahan praprosedur ke file sumber Anda untuk dinonaktifkan lalu aktifkan kembali aturannya.
#pragma warning disable CA1309
// The code that's violating the rule is on this line.
#pragma warning restore CA1309
Untuk menonaktifkan aturan untuk file, folder, atau proyek, atur tingkat keparahannya ke none
dalam file konfigurasi.
[*.{cs,vb}]
dotnet_diagnostic.CA1309.severity = none
Untuk informasi selengkapnya, lihat Cara menyembunyikan peringatan analisis kode.