Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membandingkan Objek Kompleks dengan Cekap dalam C#?
Bandingkan objek kompleks C# dengan cekap
Soalan:
Membandingkan objek kompleks yang mengandungi berbilang lapisan sub-objek boleh menjadi rumit. Menentukan cara terbaik untuk memastikan kesaksamaan adalah penting untuk prestasi dan ketepatan.
Penyelesaian:
Melaksanakan antara muka IEquatable<T>
pada jenis tersuai dan mengatasi kaedah Object.Equals
dan Object.GetHashCode
yang diwarisi untuk menyediakan penyelesaian terpantas dan tersuai untuk membandingkan objek kompleks.
Butiran:
Untuk jenis nilai, anda boleh memanggil kaedah Equals
terus. Untuk jenis rujukan, berbilang semakan perlu digabungkan untuk memastikan kecekapan:
ReferenceEquals
: Sahkan sama ada rujukan menghala ke objek yang sama. NullReferenceException
. IEquatable<T>.Equals
: memintas kaedah Object.Equals
yang ditindih dan meningkatkan kelajuan. Contoh:
<code class="language-csharp">public class Person : IEquatable<Person> { public int Age { get; set; } public string FirstName { get; set; } public Address Address { get; set; } public override bool Equals(Person other) { return this.Age.Equals(other.Age) && ( object.ReferenceEquals(this.FirstName, other.FirstName) || this.FirstName != null && this.FirstName.Equals(other.FirstName) ) && ( object.ReferenceEquals(this.Address, other.Address) || this.Address != null && this.Address.Equals(other.Address) ); } }</code>
Alternatif:
IEquatable<T>
. Nota:
IEquatable<T>
. Object.GetHashCode
untuk menyediakan kod cincang yang sesuai berdasarkan kaedah Equals
yang dilaksanakan. IEquatable<T>
untuk jenis boleh ubah untuk mengelakkan tingkah laku yang tidak konsisten dalam koleksi yang bergantung pada identiti. Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Objek Kompleks dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!