Rumah >pembangunan bahagian belakang >C++ >Bagaimana untuk mengekalkan kesamaan objek yang konsisten dan hashing di C#?

Bagaimana untuk mengekalkan kesamaan objek yang konsisten dan hashing di C#?

Barbara Streisand
Barbara Streisandasal
2025-02-02 15:21:10312semak imbas

How to Maintain Consistent Object Equality and Hashing in C#?

Penyelenggaraan konsistensi setara objek dan nilai hash dalam C#

Mengemukakan kaedah yang sama dalam kelas Foo untuk membandingkan atribut FOOID untuk memastikan konsistensi objek sama. Walau bagaimanapun, menulis semula kaedah GetHashCode juga sangat penting untuk mematuhi peraturan kedua -dua kaedah ini.

kepentingan menulis semula gethashcode

Apabila objek digunakan sebagai kunci dalam struktur data seperti kamus atau hash set, gethashcode digunakan untuk menentukan tong mana yang harus diletakkan di mana laras harus diletakkan. Jika kod hash kedua -dua objek (ditakrifkan oleh sama) harus dianggap berbeza, mereka tidak boleh dibandingkan, mengakibatkan penilaian yang salah terhadap sifat yang sama.

realisasi cadangan GetHashCode

Dalam kes ini, cadangan GetHashCode adalah:

Ini konsisten dengan logik kaedah yang sama.

Pertimbangan Lanjutan
<code class="language-csharp">public override int GetHashCode() => base.GetHashCode();</code>

Untuk objek yang lebih rumit yang melibatkan pelbagai atribut dalam sifat yang sama, sila pertimbangkan untuk menggunakan jenis hashcode dalam rangka kerja moden atau melaksanakan pengiraan kod hash tersuai:

Tambah kemudahan

Demi kemudahan, anda boleh mempertimbangkan pelaksanaan == dan!
<code class="language-csharp">public override int GetHashCode()
{
    unchecked
    {
        int hash = 13;
        hash = (hash * 7) + FooId.GetHashCode();
        hash = (hash * 7) + FooName.GetHashCode();
        return hash;
    }
}</code>

dengan mengamati prinsip -prinsip ini, ia dapat memastikan tingkah laku yang konsisten sama dengan sifat dan hash, dengan itu meningkatkan kebolehpercayaan dan prestasi permohonan.

Atas ialah kandungan terperinci Bagaimana untuk mengekalkan kesamaan objek yang konsisten dan hashing di C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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