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 jenis rujukan dengan semantik nilai (jenis tidak berubah yang kesamaan dianggap sebagai kesamaan), pendekatan yang disyorkan adalah untuk melaksanakan antara muka System.IEquatable
Contoh:
<code class="language-csharp">class Point : IEquatable<Point> { // ... public bool Equals(Point other) { return X.Equals(other.X) && Y.Equals(other.Y); } // ... }</code>
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>
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!