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.
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!