Rumah >pembangunan bahagian belakang >C++ >C# Perbandingan String: Bilakah == berbeza daripada sama dengan ()?

C# Perbandingan String: Bilakah == berbeza daripada sama dengan ()?

DDD
DDDasal
2025-02-01 18:56:08310semak imbas

C# String Comparison: When Does == Differ From Equals()?

perbezaan antara pemahaman c# == dan sama dengan ()

Dalam C#, anda mungkin menghadapi situasi ini: gunakan == Perbandingan perbandingan komponen untuk membandingkan dua rentetan kembali kepada palsu, dan sama dengan () kaedah pulangan benar. Untuk memahami tingkah laku ini, anda mesti menguasai perbezaan asas pengendali ini.

Apabila digunakan untuk objek, nilai == Nilai pengendali adalah System.Object.ReferenceEquals. Ini bermakna ia memeriksa sama ada dua objek rentetan merujuk objek yang sama dalam ingatan. Sebaliknya, sama dengan () adalah kaedah maya yang boleh ditulis semula oleh jenis tersuai (termasuk rentetan).

Untuk rentetan, gunakan versi penulisan semula sama () untuk memeriksa kandungan sebenar rentetan. Oleh itu, jika anda membandingkan dua rentetan dengan watak yang sama tetapi disimpan dalam kedudukan memori yang berbeza, == akan kembali kepada palsu kerana mereka tidak dirujuk dalam objek yang sama, dan sama dengan () akan kembali ke Benar kerana ia sama.

Contoh kod:

Pertimbangkan serpihan kod berikut:

Dalam kod ini, kedua -dua syarat ini akan membandingkan sifat kandungan ListBoxItem yang dipilih dengan "serangan tenaga" rentetan. Walaupun keadaan pertama sama () dikira sebagai benar, jika harta kandungan adalah objek rentetan baru, keadaan kedua == mungkin dikira sebagai palsu. Ini kerana identifikasi semak operator ==, dan dua objek rentetan yang berbeza dengan nilai yang sama adalah berbeza.

Oleh itu, apabila membandingkan sifat yang sama rentetan dalam C#, adalah disyorkan untuk menggunakan kaedah sama () (ia menilai sifat yang sama kandungan) dan bukannya == (ia memeriksa logo).
<code class="language-c#">if (((ListBoxItem)lstBaseMenu.SelectedItem).Content.Equals("Energy Attack"))
{
    // 执行代码
}

if (((ListBoxItem)lstBaseMenu.SelectedItem).Content == "Energy Attack")
{
    // 执行代码
}</code>

Atas ialah kandungan terperinci C# Perbandingan String: Bilakah == berbeza daripada sama dengan ()?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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