Rumah > pembangunan bahagian belakang > C++ > Mengapa Perbandingan Rentetan Tidak Peka Huruf Gagal dalam C# Menggunakan `x.Username.Equals()`?

Mengapa Perbandingan Rentetan Tidak Peka Huruf Gagal dalam C# Menggunakan `x.Username.Equals()`?

Patricia Arquette
Lepaskan: 2025-01-19 12:51:10
asal
188 orang telah melayarinya

Why Does Case-Insensitive String Comparison Fail in C# Using `x.Username.Equals()`?

Menyelesaikan Masalah Perbandingan Rentetan Kes-Tidak Peka dalam C#

Satu perangkap biasa dalam pembangunan C# melibatkan pelaksanaan perbandingan rentetan tidak sensitif huruf besar-besaran. Walaupun x.Username.Equals() mungkin kelihatan sesuai, ia boleh membawa kepada hasil yang tidak dijangka jika sensitiviti kes tidak dikendalikan secara eksplisit.

Pendekatan awal, x.Username.Equals((string)drUser["Username"], StringComparison.OrdinalIgnoreCase)), walaupun kelihatan betul, mungkin tidak selalu berfungsi seperti yang diharapkan dalam konteks yang lebih besar.

Isu timbul apabila menggunakan Equals dalam ungkapan LINQ, seperti FindIndex. Masalahnya terletak pada pengendalian tersirat kaedah bagi nilai nol.

Pendekatan yang Betul

Penyelesaian adalah dengan menggunakan String.Equals secara langsung, memastikan pengendalian nol yang betul dan perbandingan tidak sensitif huruf besar/kecil:

drUser["Enrolled"] = (enrolledUsers.FindIndex(x => String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase)));
Salin selepas log masuk

Kod yang disemak ini secara eksplisit memanggil kaedah String.Equals statik, yang mengendalikan potensi nilai nol dengan betul daripada sama ada x.Username atau (string)drUser["Username"].

Amalan Terbaik Disyorkan

Untuk manipulasi rentetan yang mantap dan cekap:

  • Perbandingan: Gunakan String.Equals lebihan beban untuk semakan kesaksamaan, nyatakan StringComparison.OrdinalIgnoreCase untuk perbandingan tidak peka huruf besar-kecil.
  • Isih: Gunakan String.Compare atau String.CompareTo untuk operasi pengisihan rentetan. Kaedah ini memberikan lebih kawalan dan kecekapan untuk menyusun tugas.

Contoh Pelaksanaan

Coretan kod berikut menggambarkan amalan terbaik yang disyorkan:

drUser["Enrolled"] = enrolledUsers.FindIndex(x => String.Equals(x.Username, (string)drUser["Username"], StringComparison.OrdinalIgnoreCase));
Salin selepas log masuk

Dengan mengikuti garis panduan ini, pembangun boleh mengelakkan perangkap biasa dan memastikan perbandingan rentetan tidak sensitif huruf besar dan kecil yang cekap dalam aplikasi C# mereka.

Atas ialah kandungan terperinci Mengapa Perbandingan Rentetan Tidak Peka Huruf Gagal dalam C# Menggunakan `x.Username.Equals()`?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan