Rumah >pembangunan bahagian belakang >C++ >Apakah Perbezaan Antara `string.Equals()` dan `==` Operator dalam C#?
string.Equals()
dan ==
OperatorKesamaan rentetan dalam C# sering menimbulkan persoalan. Bolehkah kaedah ==
dan string.Equals()
benar-benar digunakan secara bergantian? Mari kita menyelami perbezaan mereka untuk menjelaskan penggunaannya.
Satu perbezaan utama ialah pengendalian polimorfisme mereka. string.Equals()
Kaedah ini adalah polimorfik, yang bermaksud pelaksanaannya boleh ditindih dalam kelas terbitan. Fleksibiliti ini membolehkan pelbagai jenis objek mengendalikan perbandingan kesamaan dengan cara yang konsisten.
Sebaliknya, pengendali ==
bergantung pada jenis masa penyusunan operan. Oleh itu, jika anda membandingkan dua objek jenis masa kompilasi yang berbeza (contohnya, rentetan dan WPF TreeViewItem.Header), ia akan melakukan perbandingan rujukan, bukan perbandingan nilai.
Satu lagi perbezaan utama ialah perkara yang berlaku apabila mana-mana operan kosong. Jika anda cuba memanggil kaedah string.Equals()
pada objek kosong, ia akan membuang NullReferenceException
pengecualian. Walau bagaimanapun, pengendali ==
mengembalikan true
apabila membandingkan dua rujukan nol.
Untuk mengelakkan masalah ini, anda boleh menggunakan kaedah object.Equals()
, yang mengendalikan nilai nol dengan anggun. Kaedah ini mengembalikan false
jika sama ada operan kosong atau true
jika kedua-duanya kosong atau sama.
Ringkasnya, string.Equals()
kaedah dan ==
pengendali tidak boleh digunakan secara bergantian. Yang pertama adalah polimorfik dan menyediakan perbandingan nilai manakala yang terakhir bergantung pada maklumat jenis masa penyusunan dan melakukan perbandingan rujukan. Selain itu, kaedah object.Equals()
menyediakan cara yang konsisten dan selamat nol untuk membandingkan objek untuk kesaksamaan.
Atas ialah kandungan terperinci Apakah Perbezaan Antara `string.Equals()` dan `==` Operator dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!