Perbandingan Contoh Jenis Rujukan C#: Amalan Terbaik
Dalam pembangunan perisian, adalah tugas biasa untuk membandingkan dua tika jenis rujukan (mis. untuk menentukan sama ada ia mengandungi data yang sama). Walaupun mengatasi pengendali kesamaan (==) atau kaedah Equals ialah pendekatan yang digunakan secara meluas, panduan terkini daripada Microsoft mengesyorkan agar tidak berbuat demikian. Ini menimbulkan persoalan tentang apakah amalan terbaik untuk membandingkan jenis rujukan.
Kaedah yang disyorkan: laksanakan antara muka IEquatable
Untuk jenis rujukan dengan semantik nilai (di mana kesamaan bermaksud jenis tidak berubah yang sama), adalah disyorkan untuk melaksanakan antara muka System.IEquatable
Berikut ialah contoh kelas yang menggunakan kaedah ini untuk melaksanakan kesamaan nilai:
<code class="language-csharp">class Point : IEquatable<Point> { // 为简洁起见,省略字段和构造函数 public bool Equals(Point other) { // 对 X 和 Y 属性进行相等性检查 } // 包含其他必需的重写和运算符 }</code>
Elakkan perbandingan identiti
Jangan mengatasi pengendali kesaksamaan (= dan !=) untuk kelas rujukan yang tidak mewakili nilai tidak berubah. Sebaliknya, bergantung pada tingkah laku lalai mereka, yang membandingkan identiti objek. Kaedah ini sesuai untuk kelas yang bertujuan untuk menjadi satu-satunya contoh.
Nota lain
Jika kelas terbitan mungkin perlu dikendalikan secara berbeza, anda boleh menambah semakan jenis tambahan dalam kaedah Equals untuk memastikan perbandingan hanya dilakukan antara tika jenis yang sama.
Kesimpulan
Untuk jenis rujukan, melaksanakan kesaksamaan dengan betul, cekap dan tanpa pertindihan kod adalah penting untuk perbandingan yang tepat. Dengan mengguna pakai amalan yang disyorkan untuk melaksanakan antara muka IEquatable dan mematuhi garis panduan berkenaan identiti dan nilai semantik, pembangun boleh memastikan operasi yang boleh dipercayai dan cekap melibatkan perbandingan jenis rujukan.
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Contoh Jenis Rujukan Terbaik dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!