Overriding Equals() dan GetHashCode() for Effective Object Equivalence
Dalam usaha mencari kesamaan objek, Equals() dan GetHashCode( ) kaedah memainkan peranan penting. Untuk kelas tersuai, adalah perlu untuk mengatasi kaedah ini untuk mewujudkan mekanisme perbandingan dan pencincangan yang bermakna. Artikel ini memberi penerangan tentang pendekatan yang betul untuk melaksanakan kaedah ini dalam konteks kelas RecommendationDTO, membolehkannya disepadukan dengan lancar dengan kaedah LINQ Except().
Overriding Equals()
Mengatasi GetHashCode()
Sampel Pelaksanaan
Berikut ialah yang dipertingkatkan pelaksanaan kaedah Equals() dan GetHashCode() untuk RecommendationDTO kelas:
public override bool Equals(object obj) { var item = obj as RecommendationDTO; if (item == null || ReferenceId == Guid.Empty || item.ReferenceId == Guid.Empty) { return false; } return this.RecommendationId.Equals(item.RecommendationId); } public override int GetHashCode() { if (ReferenceId == Guid.Empty) { throw new InvalidOperationException("ReferenceId cannot be Guid.Empty when calculating hash code."); } return this.RecommendationId.GetHashCode(); }
Dengan melaksanakan Equals() dan GetHashCode() dengan cara ini, kelas RecommendationDTO kini boleh digunakan dengan berkesan dengan kaedah LINQ Except() , memastikan objek dengan sifat bermakna yang sama dirawat sebagai berbeza.
Atas ialah kandungan terperinci Bagaimana untuk Mengatasi Equals() dan GetHashCode() dengan Betul untuk Perbandingan Objek Berkesan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!