Rumah > pembangunan bahagian belakang > C++ > Bagaimanakah Saya Boleh Membandingkan Sifat Objek dengan Cekap untuk Kesamaan dalam C#?

Bagaimanakah Saya Boleh Membandingkan Sifat Objek dengan Cekap untuk Kesamaan dalam C#?

Susan Sarandon
Lepaskan: 2025-01-22 22:26:10
asal
507 orang telah melayarinya

How Can I Efficiently Compare Object Properties for Equality in 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>
Salin selepas log masuk

Kaedah ini menawarkan beberapa penambahbaikan utama:

  • Integrasi LINQ: Penggunaan LINQ memperkemas lelaran sifat, meningkatkan kebolehbacaan dan berpotensi meningkatkan prestasi berbanding gelung for tradisional.
  • Kaedah Sambungan: Dilaksanakan sebagai kaedah sambungan, ia membolehkan sintaks yang lebih ringkas dan lancar apabila membandingkan objek.
  • Pengesahan Jenis Mudah: Ia secara eksplisit menyemak sama ada sifat adalah jenis ringkas (cth., 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!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan