Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk Membandingkan Jenis Rujukan Terbaik dalam .NET?
Apabila membandingkan jenis rujukan dalam .NET, adalah penting untuk memahami perbezaan antara kesamaan rujukan dan kesamaan nilai. Kesamaan rujukan menyemak sama ada dua rujukan menghala ke objek yang sama, manakala kesamaan nilai menyemak sama ada objek mempunyai data yang sama.
Timpa pengendali kesamaan (==) dan kaedah Equals
Adalah tidak disyorkan untuk mengatasi pengendali kesamaan (==) dan/atau kaedah Equals untuk membandingkan jenis rujukan melainkan jenis tersebut menyatakan nilai semantik (iaitu, objek tidak berubah yang dianggap sama berdasarkan datanya). Dalam kes ini, pertimbangkan untuk melaksanakan antara muka System.IEquatable
Antara muka boleh sama
Jika jenis rujukan anda mewakili semantik nilai, laksanakan System.IEquatable
Antara muka yang setanding
ICcomparable direka terutamanya untuk digunakan dengan jenis nilai, bukan jenis rujukan. Elakkan menggunakannya dengan jenis rujukan.
Perbandingan tersuai
Daripada mengatasi pengendali kesaksamaan atau melaksanakan IComparable, pertimbangkan untuk mencipta kaedah tersuai untuk membandingkan jenis rujukan. Gunakan kaedah Equals untuk menyemak identiti objek dan mengatasinya untuk membandingkan sifat berkaitan.
Contoh nilai yang sama
Berikut ialah contoh pelaksanaan kesamaan nilai untuk kelas Point:
<code class="language-csharp">class Point : IEquatable<Point> { public int X { get; } public int Y { get; } public Point(int x = 0, int y = 0) { X = x; Y = y; } public bool Equals(Point other) { if (other is null) return false; return X.Equals(other.X) && Y.Equals(other.Y); } public override bool Equals(object obj) => Equals(obj as Point); public static bool operator ==(Point lhs, Point rhs) => object.Equals(lhs, rhs); public static bool operator !=(Point lhs, Point rhs) => !(lhs == rhs); public override int GetHashCode() => HashCode.Combine(X, Y); }</code>
Kesimpulan
Untuk jenis rujukan dengan semantik nilai, laksanakan System.IEquatable
Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Jenis Rujukan Terbaik dalam .NET?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!