Penjelasan terperinci kaedah perbandingan rentetan C#
C# menyediakan pelbagai kaedah perbandingan rentetan, masing-masing mempunyai ciri tersendiri. Artikel ini akan meneroka perbezaan antara tiga kaedah biasa: pengendali CompareTo()
, Equals()
dan ==
.
CompareTo()
Kaedah
CompareTo()
menggunakan atribut CurrentCulture.CompareInfo
untuk perbandingan sensitif huruf besar-besaran. Ia mengisih nilai nol sebelum nilai bukan nol dan menggunakan peraturan padanan aksara khusus budaya, yang boleh menyebabkan aksara membandingkan secara berbeza dalam budaya yang berbeza. Contohnya, dalam tetapan Jerman, ß dan SS mungkin dianggap sama.
Equals()
Kaedah
Tidak seperti CompareTo()
, Equals()
menganggap nilai nol sebagai tidak sama dengan sebarang nilai. Secara lalai, ia melakukan perbandingan tidak peka huruf besar-besaran, memperlakukan rentetan dengan urutan aksara yang sama sebagai sama. Walau bagaimanapun, ambil perhatian bahawa lebihan kaedah Equals()
membenarkan menentukan pilihan perbandingan yang berbeza, seperti perbandingan sensitif huruf besar-besaran.
==
Operator
==
sering dianggap sinonim dengan Equals()
, tetapi ia sebenarnya memanggil kaedah statik Equals(string a, string b)
. Walau bagaimanapun, tidak seperti memanggil Equals()
pada rentetan null, menggunakan operator ==
dengan operan null tidak menghasilkan pengecualian rujukan null. Adalah penting untuk diingat bahawa pengendali ==
menyemak kesamaan rujukan, manakala Equals()
menyemak kesamaan nilai.
Object.ReferenceEquals()
Kaedah
Jika anda perlu membandingkan rujukan kepada objek rentetan, anda boleh menggunakan kaedah Object.ReferenceEquals()
. Kaedah ini menyemak sama ada alamat rujukan dua objek rentetan adalah sama, menunjukkan sama ada ia menunjuk kepada contoh yang sama.
Panduan Pemilihan Kaedah
Kaedah perbandingan yang anda pilih bergantung pada keperluan khusus aplikasi anda. Untuk perbandingan yang tidak sensitif huruf dan tidak sensitif budaya, Equals()
ialah pilihan yang baik. Jika anda memerlukan perbandingan budaya yang berbeza, gunakan CompareTo()
. Jika anda perlu membandingkan rujukan kepada objek rentetan, anda harus menggunakan Object.ReferenceEquals()
.
Faktor lain
Perlu diambil perhatian bahawa lebihan kaedah di atas memberikan pilihan untuk menentukan syarat perbandingan lain, seperti pengendalian kes dan ruang kosong. Pilihan ini membolehkan kawalan yang lebih baik ke atas perbandingan rentetan, seterusnya memperluaskan kefungsian perbandingan rentetan dalam C#.
Atas ialah kandungan terperinci Bagaimanakah `CompareTo()`, `Equals()`, `==`, dan `ReferenceEquals()` Berbeza Apabila Membandingkan Rentetan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!