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
Lepaskan: 2025-02-02 15:21:10
asal
236 orang telah melayarinya

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>
Salin selepas log masuk

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>
Salin selepas log masuk

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!

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