Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Harus Membandingkan Dua Contoh Jenis Rujukan dalam C#?

Bagaimanakah Saya Harus Membandingkan Dua Contoh Jenis Rujukan dalam C#?

Linda Hamilton
Lepaskan: 2025-01-07 17:37:39
asal
494 orang telah melayarinya

How Should I Compare Two Instances of a Reference Type in C#?

Amalan Terbaik: Membandingkan Dua Contoh Jenis Rujukan dalam C#

Apabila membandingkan jenis rujukan, pastikan anda menjelaskan tingkah laku yang dijangkakan: nilai kesamaan atau identiti rujukan.

Timpa pengendali kesamaan ("==") dan kaedah Equals untuk mencapai identiti rujukan

Pada masa lalu, pembangun akan mengatasi kaedah "==" dan Equals untuk menyemak identiti rujukan. Walau bagaimanapun, piawaian pengekodan menasihatkan supaya tidak melakukannya kerana ia boleh menyebabkan kekaburan dalam situasi tertentu.

Pilihan 1: Laksanakan antara muka IEquatable

untuk kesaksamaan nilai

Untuk jenis rujukan dengan semantik nilai (jenis tidak berubah yang kesamaan dianggap sebagai kesamaan), pendekatan yang disyorkan adalah untuk melaksanakan antara muka System.IEquatable. Ini membolehkan anda menentukan perbandingan kesaksamaan tersuai yang memfokuskan pada nilai dan bukannya rujukan.

Contoh:

<code class="language-csharp">class Point : IEquatable<Point> {
    // ...
    public bool Equals(Point other) {
        return X.Equals(other.X) && Y.Equals(other.Y);
    }
    // ...
}</code>
Salin selepas log masuk

Pilihan 2: Gunakan kaedah Equals tersuai dengan semakan jenis untuk mencapai kesamaan nilai

Jika anda lebih suka kaedah Equals tersuai, pastikan ia menyemak kedua-dua kesamaan rujukan dan jenis objek yang dibandingkan. Ini menghalang tingkah laku yang tidak dijangka apabila membandingkan objek kelas terbitan.

Contoh:

<code class="language-csharp">public bool Equals(Point other) {
    if (other is null) return false;
    if (other.GetType() != GetType()) return false;
    return X.Equals(other.X) && Y.Equals(other.Y);
}</code>
Salin selepas log masuk

Bila hendak menggunakan identiti rujukan

Jangan laksanakan pengendali "==" dan "!=" untuk kelas rujukan yang tidak mewakili nilai tidak berubah. Sebaliknya, bergantung pada tingkah laku lalai mereka untuk membandingkan objek untuk identiti.

Atas ialah kandungan terperinci Bagaimanakah Saya Harus Membandingkan Dua Contoh Jenis Rujukan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
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