Adalah amalan biasa untuk mengatasi pengendali kesamaan (==) atau kaedah Equals untuk membandingkan jenis rujukan. Walau bagaimanapun, perbincangan baru-baru ini mengenai MSDN mengesyorkan merawat pendekatan ini dengan berhati-hati. Persoalannya kekal:
Bagaimana hendak membandingkan dua jenis rujukan dengan cekap dan betul?
Menurut artikel MSDN yang disebutkan, mengatasi pengendali kesamaan (==) dan kaedah Equals secara amnya tidak disyorkan untuk jenis rujukan kerana ia membandingkan identiti contoh berbanding kesamaan data. Ini boleh membawa kepada hasil yang tidak dijangka dalam beberapa kes.
Untuk jenis rujukan dengan semantik nilai (di mana kesaksamaan harus berdasarkan kandungan data), amalan terbaik ialah melaksanakan antara muka System.IEquatable
Berikut ialah contoh pelaksanaan antara muka IEquatable
<code>public class Point : IEquatable<Point> { public int X { get; } public int Y { get; } public bool Equals(Point other) => X.Equals(other.X) && Y.Equals(other.Y); }</code>
Selain melaksanakan Equals, apabila menggunakan IEquatable
Melaksanakan IEquatable
Melaksanakan kesaksamaan dalam .NET dengan betul memerlukan pertimbangan yang teliti terhadap semantik jenis yang dibandingkan. Dengan mengikuti amalan terbaik di atas, anda boleh memastikan perbandingan jenis rujukan yang boleh dipercayai dan cekap, sama ada ia mewakili semantik nilai atau semantik rujukan.
Atas ialah kandungan terperinci Apakah Cara Terbaik untuk Membandingkan Jenis Rujukan dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!