Rumah >pembangunan bahagian belakang >C++ >Bagaimanakah Saya Boleh Melaksanakan Kamus Berbilang Kunci dengan Cekap dalam C#?
Kaedah pelaksanaan kamus berbilang kunci C#
Pustaka Kelas Pangkalan .NET (BCL) tidak mempunyai kamus berbilang kunci terbina dalam, tetapi terdapat beberapa pilihan sumber terbuka yang tersedia.
Gunakan tupel sebagai kunci
Pendekatan biasa ialah menggunakan tupel sebagai kunci. Walau bagaimanapun, kaedah ini mempunyai beberapa kelemahan:
Struktur tupel tersuai
Untuk mengatasi batasan ini, anda boleh menentukan struktur tuple tersuai:
<code class="language-csharp">public struct Tuple<T1, T2> { public readonly T1 Item1; public readonly T2 Item2; public Tuple(T1 item1, T2 item2) { Item1 = item1; Item2 = item2; } }</code>
Ini memberikan kebolehubahan, kod cincang pra-pengiraan dan perbandingan kesamaan. Amalan terbaik ialah meletakkan medan yang paling membezakan dalam item pertama.
Pustaka ValueUtils melaksanakan algoritma pencincangan yang lebih baik
Pustaka ValueUtils menyediakan kaedah FieldwiseHasher.Hash, yang boleh mencipta kod cincang yang lebih dipercayai untuk struktur dan menyelesaikan masalah pelaksanaan GetHashCode yang lemah untuk tupel.
Objek nilai bernama meningkatkan kebolehbacaan
ValueUtils juga membenarkan penggunaan medan bernama dalam kunci berbilang medan, meningkatkan kebolehbacaan kod:
<code class="language-csharp">sealed class MyValueObject : ValueObject<MyValueObject> { public DayOfWeek day; public string NamedPart; }</code>
Dengan pendekatan ini, data dengan nilai semantik boleh mempunyai kedua-dua ahli bernama dan kod cincang yang betul sehingga sokongan asli untuk tupel bernama dengan kod cincang yang baik dilaksanakan dalam versi C# akan datang.
Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Melaksanakan Kamus Berbilang Kunci dengan Cekap dalam C#?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!