Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Membandingkan Sifat Objek dengan Cekap untuk Kesamaan dalam C#?
Membandingkan Sifat Objek dengan Cekap dalam C#
Artikel ini meneroka kaedah yang cekap untuk membandingkan sifat objek dalam C#. Cabaran biasa ialah menentukan sama ada dua objek daripada jenis yang sama mempunyai nilai sifat yang sama. Kami akan mengkaji pendekatan yang dipertingkatkan yang memanfaatkan kaedah LINQ dan sambungan.
Kaedah Perbandingan Harta Yang Dipertingkat
Kod C# berikut menyediakan penyelesaian yang diperhalusi untuk membandingkan sifat objek:
<code class="language-csharp">public static bool PublicInstancePropertiesEqual<T>(this T self, T to, params string[] ignore) where T : class { if (self != null && to != null) { var type = typeof(T); var ignoreList = new List<string>(ignore); var unequalProperties = from pi in type.GetProperties(BindingFlags.Public | BindingFlags.Instance) where !ignoreList.Contains(pi.Name) && pi.GetUnderlyingType().IsSimpleType() && pi.GetIndexParameters().Length == 0 let selfValue = type.GetProperty(pi.Name).GetValue(self, null) let toValue = type.GetProperty(pi.Name).GetValue(to, null) where selfValue != toValue && (selfValue == null || !selfValue.Equals(toValue)) select selfValue; return !unequalProperties.Any(); } return self == to; }</code>
Kaedah ini menawarkan beberapa penambahbaikan utama:
for
tradisional.int
, string
, bool
), menghalang kemungkinan ralat apabila berurusan dengan sifat objek kompleks. Ini mengelakkan masalah berulang.Pendekatan yang dioptimumkan ini memastikan perbandingan sifat objek yang cekap dan boleh dipercayai sambil mengekalkan kejelasan dan kemudahan penggunaan.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Membandingkan Sifat Objek dengan Cekap untuk Kesamaan dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!